스프링데이터 JPA - 컨트롤러에서 Pageable 파라미터로 받아 페이징하기
2021. 2. 8. 13:04ㆍJPA/SPRING DATA JPA
컨트롤러에서 Pageable을 파라미터로 받을 수 있다.
예)
1
2
3
4
5
|
@GetMapping("/members")
public Page<Member> list(Pageable pageable) {
Page<Member> page = memberRepository.findAll(pageable);
return page;
}
|
cs |
스프링 데이터는 pageable에 PageRequest 객체를 주입해준다.
요청 파라미터
예) /members?page=0&size=3&sort=id,desc&sort=username,desc
page: 현재 페이지, 0부터 시작한다.
size: 한 페이지에 노출할 데이터 건수
sort: 정렬 조건을 정의한다. 예) 정렬 속성,정렬 속성...(ASC | DESC), 정렬 방향을 변경하고 싶으면 sort 파라미터 추가 ( asc 생략 가능)
설정
글로벌 설정: 스프링 부트
spring.data.web.pageable.default-page-size=20 /# 기본 페이지 사이즈/
spring.data.web.pageable.max-page-size=2000 /# 최대 페이지 사이즈/
개별 설정: @PageableDefault 어노테이션을 사용
예)
1
2
3
4
5
|
@RequestMapping(value = "/members_page", method = RequestMethod.GET)
public String list(@PageableDefault(size = 12, sort = “username”, direction = Sort.Direction.DESC) Pageable pageable) {
...
}
|
cs |
페이지 파라미터가 2개 이상일 경우
접두어로 구분
파라미터에 {접두어}_+"xxx" 로 설정
예) /members?member_page=0&order_page=1
컨트롤러에서는 @Qualifier 어노테이션으로 접두어를 설정하여 구분.
예)
1 2 3 | public String list(@Qualifier("member") Pageable memberPageable, @Qualifier("order") Pageable orderPageable, ...){ ... } | cs |
'JPA > SPRING DATA JPA' 카테고리의 다른 글
스프링데이터 JPA - 엔티티 식별자 직접할당시 save 성능 최적화(Persistable) (0) | 2021.02.08 |
---|---|
스프링데이터 JPA - 도메인 클래스 컨버터 (0) | 2021.02.08 |
스프링 데이터 JPA - Auditing, 엔티티에 등록일, 수정일, 등록자, 수정자 자동으로 적용하기! (0) | 2021.02.08 |
스프링데이터 JPA - 사용자 정의 레퍼지토리 구현 (0) | 2021.02.07 |
스프링 데이터 JPA[쿼리 메서드] - 벌크 연산 (0) | 2021.02.06 |