Pageable으로 페이징처리를 구현한것을 정리해본다.
postRepository
public interface PostRepository extends JpaRepository<Post, Long> {
@Query(value = "select p from Post p where p.isPrivate = 0")
Page<Post> findAll(Pageable pageable);
}
JpaRepository는 PagingAndSortingRepository를 상속받는다.
Pageable 을 매개변수로 받아 Pagination과 Sort를 구현할 수 있다.
postController
@GetMapping("/postList")
public ResponseEntity<GetPostListDto.Response> getPostList(@RequestParam Optional<Integer> page, @RequestParam Optional<Integer> size, @RequestParam Optional<String> sortBy)
{
List<Post> postList = postService.getPostList(page,size,sortBy);
return ResponseEntity.ok().body(GetPostListDto.Response.builder()
.postList(postList.stream().map(post -> modelMapper.map(post, GetPostListDto.Post.class)).collect(Collectors.toList()))
.build());
}
postService
public List<Post> getPostList(Optional<Integer> page, Optional<Integer> size, Optional<String> sortBy) {
Page<Post> pagePost = postRepo.findAll(
PageRequest.of(
page.orElse(0),
size.orElse(30),
Sort.Direction.DESC, sortBy.orElse("id")
)
);
List<Post> postList = pagePost.getContent();
return postList;
}
page : 요청할 페이지 번호
size : 한 페이지 당 조회 할 갯수
sort : Sorting에 대한 값 설정하는 파라미터(오름차순이 기본)
파라미터로 받지 않았다면 page와 size를 각각 0과 30으로 세팅하게 했고, id별로 내림차순(DESC)으로 정렬했다.
'BACK > SPRING' 카테고리의 다른 글
[Spring Boot] Logback 적용하기 (0) | 2022.10.11 |
---|---|
[Spring Boot] Maven 환경에 Swagger 적용하기 (0) | 2022.10.11 |
[Spring JPA] 쿼리 메소드 사용하기 (0) | 2022.07.04 |
[Spring JPA] CRUD 기능 테스트하기 (0) | 2022.07.04 |
[Spring] AOP란? 용어 정리, 사용 방법 (1) | 2021.10.18 |