글이 500만개가 있을때 한번에 다 보여줄 수는 없다
Repository에 Pageable을 선언하고
Page<Item> findPageBy(Pageable page);
/list/page/1 형태로 들어오면 페이지를 가져오는 코드를 작성한다
items에 담아둔 page는 html에서 반복문을 돌면서 해당하는 페이지의 아이템들을 가져올 수 있다
PageRequest는 0부터 시작해서 n개를 가져오니 -1을 해줬다
@GetMapping("/list/page/{id}")
String getListPage(Model model, @PathVariable Integer id){
//n번째 페이지에서 m개 가져온다
Page<Item> page = itemRepository.findPageBy(PageRequest.of(id-1, 5));
model.addAttribute("items",page);
return "list.html";
}
html에는 아래처럼 페이지 버튼을 만들어서 클릭하면 해당 페이지로 넘어갈 수 있게 했다
<div th:each="pageNumber : ${#numbers.sequence(1, pages)}">
<form th:action="@{'/list/page/' + ${pageNumber}}" method="get" style="display: inline;">
<button type="submit" th:text="${pageNumber}">Page</button>
</form>
</div>
'스프링 쇼핑몰 만들어보기' 카테고리의 다른 글
S3 버킷 스프링 어플리케이션에서 사용하기 (0) | 2024.05.05 |
---|---|
aws S3 이미지 업로드 (0) | 2024.05.05 |
DTO 만들어서 데이터 보내기 (0) | 2024.05.05 |
스프링 시큐리티, 회원가입 기능 만들기, 외부 클래스 DI (0) | 2024.05.04 |
세션 & 토큰 (0) | 2024.05.03 |