JPA Repository를 상속받으면 너~~~~~무 편리해서 빠져나오기 힘들다.. 즈파로도 페이징을 할 수 있지 않을까? 해서 찾아봤더니 아니나 다를까..!
레포지터리에서 jpa를 상속받고, pageable을 매개변수로 넣어준다.
++ List<DealPost> 였던 것을 페이징 처리를 위해 Page<DealPost>로 수정!
public interface DealRepository extends JpaRepository<DealPost, Long> {
Page<DealPost> findAllByUuidAndIsDeletedFalse(String uuid, Pageable pageable);
}
dealPost list를 가져오는 서비스를 만들 것이다.
uuid로 찾되, 삭제되지 않은 게시글만 가져온다!
++IsDeleted(Boolean isDeleted)로 했다가, 항상 false인 값만 가져와야 하므로 IsDeletedFalse로 바꿨다! 이게 되네.. 즈파,, 당신은 도덕책,,,
int page 는 유저가 선택한 페이지이고, pageLimit는 개발자가 보여줄 게시글의 수이다.
게시글을 최신순으로 나타내기 위하여 Sort.by(Sort.Direction.DESC, "createAt")를 사용했다.
만약에 pageable만 들어간다면 pageable1을 만들지 않고, pageRequest.of부터 findby메서드에 넣어주면 된다.
@Override
public Page<MainPagePostResponseDto> getDealPostLists(int page) {
int pageLimit = 8;
Pageable pageable1 = PageRequest.of(page, pageLimit, Sort.by(Sort.Direction.DESC, "createAt"));
Page<DealPost> dealPosts = dealRepository.findAllByStatusAndIsDeletedFalse(SaleStatus.IN_PROGRESS, pageable1);
return dealPosts.map(MainPagePostResponseDto::new);
}
TMI. PageRequest.of가 바로 되는 이유는, pageable의 상속을 쭉- 따라 올라가면 생성자가 protect로 설정되어있기 때문이다 ㅎㅎ
이제 서비스를 호출할 카테고리를 보면 page를 파라미터 값으로 받고 보내준다! defaultvalue는 0으로 설정해두면 첫페이지로 향하게 된다.
/**
* @return 판매중인 게시글
*/
@GetMapping("main")
public ResponseEntity<?> getMainInfo(@RequestParam(value = "page", defaultValue = "0") int page) {
return new ResponseEntity<>(dealService.getDealPostLists(page), HttpStatus.OK);
}
짠 결과물~ 6개씩 잘 찍힘ㅎㅎ
'JavaSpringBoot > 공부' 카테고리의 다른 글
Enum에 내가 설정한 문자열 값으로 출력하기 (0) | 2023.11.14 |
---|