Pageable
- org.springframework.data.domain
- 인터페이스이다.
- 구현체로는 PageRequest, Unpaged 존재
@GetMapping("/posts")
public List<PostResponse> getList(@PageableDefault Pageable pageable){
return postService.getList(pageable);
}
- 클라이언트가 해당 경로(/posts)로 요청을 보내면 설정에 맞게 Pageable 객체를 만들어서 넘겨준다.
- 페이지 번호는 0부터 시작
YAML 설정
spring:
data:
web:
pageable:
one-indexed-parameters: true # 페이지 1부터 시작
default-page-size: 5
- spring.data.web.pageable.one-indexed-parameters: 클라이언트 → 컨트롤러 Pageable 구현체가 넘어오면 페이징을 1부터 시작하게 만들어준다.
- default-page-size: 기본 페이지 크기 설정, @PageableDefault가 있으면 @PageableDefault 우선순위를 가진다.
@PageableDefault
@GetMapping("/posts")
public Page<Post> getPosts(
@PageableDefault(size = 10, sort = "createdDate", direction = Sort.Direction.DESC) Pageable pageable) {
return postRepository.findAll(pageable);
}
- size: 페이지당 항목 수를 설정, 기본값 20
- page: 기본적으로 요청할 페이지 번호를 설정 , 기본값은 0
- sort: 기본 정렬 기준을 설정, 기본 정렬 방향은 오름차순(ASC)
- direction: 기본 정렬 방향을 설정, Sort.Direction.ASC or Sort.Direction.DESC
주의사항
- @RequestParam과 함께 사용: @PageableDefault는 Pageable 객체를 직접 주입받는 경우에만 작동하며, @RequestParam으로 개별 파라미터를 받는 경우에는 사용되지 않는다.
'Spring > Spring Data' 카테고리의 다른 글
[JPA] 수정은 어떻게 하는 게 좋을까? (0) | 2024.08.20 |
---|---|
[JPA] Querydsl 설정 정리 (0) | 2024.08.19 |
Spring Jpa 쿼리 로그 yaml 설정 (0) | 2024.08.19 |
로컬 인메모리 H2 데이터베이스 yaml 설정 (0) | 2024.08.19 |