백엔드/Spring Boot
모여봄 #4 팀 조회 페이징 추가
jhss9747
2025. 3. 8. 12:32
전체적으로 Page 타입으로 반환하도록 수정하고,
Pageable<page(최소), size(최대)> 값을 매개변수로 받게 수정함
- TeamRepository 변경
더보기
public interface TeamRepository extends JpaRepository<Team, Long> {
@Query("SELECT new com.beyond.backend.data.dto.TeamSearchDto(t.teamName, t.teamIntroduce, t.projectStatus, t.timePeriod.createdAt) " +
"FROM User u " +
"JOIN TeamUser tu ON u.no = tu.user.no " +
"JOIN Team t ON tu.team.no = t.no " +
"WHERE u.no = :userNo")
Page<TeamSearchDto> findUserTeams(@Param("userNo") Long userNo, Pageable pageable);
}
- TeamSercviceImpl 변경
더보기
/**
* userNo로 팀 정보 조회 서비스
*
* @param userNo 유저 번호
* @param teamName (필터) 팀이름
* @param teamIntroduce (필터) 팀 설명
* @param projectStatus (필터) 팀 상태
* @param page 최소 출력 값
* @param size 최대 출력 값
* @return PageImpl 필터링 결과값 반환
*/
@Override
public Page<TeamSearchDto> filterUserTeams(
Long userNo, String teamName, String teamIntroduce, String projectStatus, int page, int size){
Pageable pageable = PageRequest.of(page, size);
Page<TeamSearchDto> teams = teamRepository.findUserTeams(userNo, pageable);
List<TeamSearchDto> filteredTeams = teams.stream()
.filter(team -> teamName == null || team.getTeamName().contains(teamName))
.filter(team -> teamIntroduce == null || team.getTeamIntroduce().contains(teamIntroduce))
.filter(team -> projectStatus == null || team.getProjectStatus().equals(projectStatus))
.toList();
return new PageImpl<>(filteredTeams, pageable, teams.getTotalElements());
}
- return new PageImpl<>(반환 요소, 범위 , 전체 크기);- TeamService 변경
더보기
Page<TeamSearchDto> filterUserTeams(
Long userNo, String teamName,
String teamIntroduce, String projectStatus,
int page, int size);
- TeamController 변경
더보기
/**
* userNo로 팀 정보를 조회하는 메서드
*
* @param userNo 유저 번호
* @param teamName (검색용) 팀이름
* @param teamIntroduce (검색용) 팀 설명
* @param projectStatus (검색용) 팀 상태
* @param page 최소 출력 값
* @param size 최대 출력 값
* @return teamSearch 검색 결과값 반환
*/
@Operation(summary = "팀 조회 메서드", description = "유저 번호로 해당 유저의 모든 팀을 조회하는 메서드 입니다.")
@GetMapping()
public ResponseEntity<Page<TeamSearchDto>> getUserTeams(
@RequestParam Long userNo,
@RequestParam(required = false) String teamName,
@RequestParam(required = false) String teamIntroduce,
@RequestParam(required = false) String projectStatus,
@RequestParam int page,
@RequestParam int size){
Page<TeamSearchDto> teamSearch = teamService.filterUserTeams(userNo, teamName, teamIntroduce, projectStatus, page, size);
return ResponseEntity.status(HttpStatus.OK).body(teamSearch);
}