JPA 페이징과 정렬
Page
org.springframework.data.domain.Page<T>
인터페이스 메소드
메소드명 | 설명 |
---|---|
int getNumber(); |
현재 페이지 넘버. 0부터 시작 |
int getSize(); |
페이지 크기 |
int getTotalPages(); |
전체 페이지 수 |
int getNumberOfElements(); |
현재 페이지에 나올 데이터 수 |
long getTotalElements(); |
전체 데이터 수 |
boolean hasPreviousPage(); |
이전 페이지 여부 |
boolean isFirstPage(); |
현재 페이지가 첫 페이지 인지 여부 |
boolean hasNextPage(); |
다음 페이지 여부 |
boolean isLastPage(); |
현재 페이지가 마지막 페이지 인지 여부 |
Pageable nextPageable(); |
다음 페이지 객체, 다음 페이지가 없으면 null |
Pageable previousPageable(); |
다음 페이지 객체, 이전 페이지가 없으면 null |
List<T> getContent(); |
조회된 데이터 |
boolean hasContent(); |
조회된 데이터 존재 여부 |
Sort getSort(); |
정렬정보 |
Pageable
Spring data jpa를 사용하면 paging 하기 쉽게 Pageable
인터페이스를 제공해준다.
PageableHandlerMethodArgumentResolverCustomizer
Pageable 인터페이스를 사용하게 되면, page 가 0부터 시작하게 된다. 이 page, size, sort의 기본 설정을 바꾸고 싶다면, org.springframework.data.web.config.PageableHandlerMethodArgumentResolverCustomizer
인터페이스를 커스터마이징 해주면 된다.
page를 1부터 시작하도록 설정
setOneIndexedParameter
를 true로 설정해주면, page가 1부터 시작한다.
@Bean
public PageableHandlerMethodArgumentResolverCustomizer customize() {
return p -> p.setOneIndexedParameters(true);
}
결과로 반환된 Page 정보에 Page::number
은 0부터 시작하기 때문에 request로 온 page와 -1씩 차이가 난다.
한 페이지당 출력할 size 기본 설정
setMaxPageSize
에 한 페이지당 출력할 size를 정할 수 있다.
@Bean
public PageableHandlerMethodArgumentResolverCustomizer customize() {
return p -> {
p.setMaxPageSize(10); // size=10
};
}
yml으로 설정
설정 파일 yml에도 지정에 줄 수도 있다.
spring:
data:
web:
pageable:
default-page-size: 10
one-indexed-parameters: true
참조
최종 수정 : 2021-08-26