먼저 페이징 기능을 개발하기 위해 Pageable을 사용했다.
PostPageController
@GetMapping("/main")
public String mainPage(Model model, @AuthenticationPrincipal CustomUserDetails customUserDetails,
@RequestParam(value = "page", defaultValue = "0") int page) {
Page<Post> paging = postService.findPosts(page);
model.addAttribute("postList", paging);
return "main";
}
@RequestParm(value = "page", defaultValue = "0") int page
PostService
public Page<Post> findPosts(int page) {
// 생성 순으로 내림차순 정렬
List<Sort.Order> sorts = new ArrayList<>();
sorts.add(Sort.Order.desc("createDate"));
Pageable pageable = PageRequest.of(page, 3);
Page<Post> findPosts = postRepository.findAll(pageable);
if (findPosts.isEmpty()) {
throw new IllegalArgumentException("등록된 게시글이 없습니다.");
}
return findPosts;
}
PostRepository
@Query("select p from Post p where p.use_yn = true")
Page<Post> findAll (Pageable pageable);
여기까지 설정 후 http://localhost:8080/main?page=0 URL을 요청하면 원하는대로 첫 페이지에 게시글 3개만 조회된다. page=1,2,3,4 를 각각 요청해도 페이지가 3개씩 조회된다.

현재 게시글의 총 개수는 20개로 page=6까지 조회되고 page=7로 넘어가면 Whitelabel Error Page가 조회된다.

참고한 사이트 - 위키독스 https://wikidocs.net/162028