페이지네이션
@GetMapping("/all")
public Api<List<PostEntity>> list(
@PageableDefault(page =0, size = 10, sort = "id", direction = Sort.Direction.DESC) // 페이지처리 위해서
Pageable pageable
){
return postService.all(pageable);
}
public Api<List<PostEntity>> all(Pageable pageable) { // 페이지네이션 정보를 전달
var list= postRepository.findAll(pageable); // Page<PostEntity>반환, 페이지네이션된 결과 반환
var pagination= Pagination.builder()
.page(list.getNumber()) //현재 몇번째 페이지
.size(list.getSize()) // 한 번에 몇개의 글을 보여줄 것인지
.totalElements(list.getTotalElements()) // 총 요소 수
.totalPage(list.getTotalPages()) // 총 페이지 개수가 몇개인지
.currentElements(list.getNumberOfElements()) // 현재 페이지의 요소 수
.build()
;
var response= Api.<List<PostEntity>>builder() // Api는 Api 응답을 나타내는 커스텀 객체
.body(list.toList()) //페이지네이션된 결과를 리스트로 변환
.pagination(pagination) // 페이지네이션 정보 설정
.build();
return response;
}
'Springboot' 카테고리의 다른 글
[스프링 부트] Filter (0) | 2024.07.04 |
---|---|
[스프링 부트] 인터셉터 (0) | 2024.07.04 |
[스프링 부트] Entity 매핑 무한루프 (0) | 2024.07.01 |
[스프링 부트] DispatcherSevlet의 역할 (0) | 2024.06.29 |
[스프링 부트] Object Mapper (0) | 2024.06.25 |