TIL - 25.01.09

이준연·2026년 1월 9일

Pagenation


데이터 조회 시 정렬 기준, 정렬 방식을 선택하여 조회하고 싶을 때 페이지네이션을 사용하면 쉽게 구현할 수 있습니다.

Pageable Interface

페이지네이션을 지원하는 인터페이스

  • getPageNumber(): 현재 페이지 번호를 반환(0부터 시작)
  • getPageSize(): 한 페이지당 최대 항목 수를 반환
  • getoOffset(): 현재 페이지의 시작 위치를 반환
  • getSort(): 정렬 정보를 반환
  • next(): 다음 페이지 정보를 반환
  • previous(): 이전 페이지 정보를 반환

PageRequest Class

JPA에서 제공하는 페이지네이션 구현체로, 페이지 정보를 생성한다.

  • page: 조회할 페이지 번호(0부터 시작)
  • size: 한 페이지당 최대 항목 수
  • sort: 정렬 정보(생략 가능)
  • direction: 정렬 방향(오름차순, 내림차순)
  • properties: 정렬 대상 속성명
@GetMapping("/api/reviews")
public SuccessResponseDto<List<ReviewResponseDto>> getReviews(@RequestParam(required = false, defaultValue = "0", value = "page") int pageNo,
                                                              @RequestParam(required = false, defaultValue = "createdAt", value = "criteria") String criteria) {
    return reviewService.getReviews(pageNo, criteria);
}
//전체 게시글 조회
@Transactional(readOnly = true)
public SuccessResponseDto<List<ReviewResponseDto>> getReviews(int pageNo, String criteria) {

    Pageable pageable = PageRequest.of(pageNo, PAGE_SIZE, Sort.by(Sort.Direction.DESC, criteria));
    Page<ReviewResponseDto> page = reviewRepository.findAll(pageable).map(ReviewResponseDto::from);

    return ResponseUtils.ok(page.getContent());
}
public interface ReviewRepository extends JpaRepository<Review, Long> {
    Page<Review> findAll(Pageable pageable);
}
profile
반갑습니다!

0개의 댓글