728x90
반응형
Test를 이용해서 findAll을 했을때 가져오는 정보들을 확인해봤다
@Test
public void findPageInfo(){
Page<Board> page = boardRepository.findAll(PageRequest.of(1, 10, Direction.DESC, "bno"));
log.info("getNumber: "+page.getNumber()); // 현재페이지
log.info("getNumberOfElements: "+page.getNumberOfElements()); //사이즈
log.info("getSize: "+page.getSize()); // 사이즈
log.info("getTotalElements: "+page.getTotalElements()); // 전체 사이즈
log.info("getTotalPages: "+page.getTotalPages()); // 전체페이지
}
결과값
2020-03-13 16:02:10.819 INFO 18316 --- [ main] c.e.s.repositories.BoardRepositoryTests : getNumber: 1
2020-03-13 16:02:10.819 INFO 18316 --- [ main] c.e.s.repositories.BoardRepositoryTests : getNumberOfElements: 10
2020-03-13 16:02:10.819 INFO 18316 --- [ main] c.e.s.repositories.BoardRepositoryTests : getSize: 10
2020-03-13 16:02:10.819 INFO 18316 --- [ main] c.e.s.repositories.BoardRepositoryTests : getTotalElements: 103
2020-03-13 16:02:10.819 INFO 18316 --- [ main] c.e.s.repositories.BoardRepositoryTests : getTotalPages: 11
이 값을 바탕으로 Page 객체를 통해 page 정보를 추출하는 PageDTO를 만들었다.
PageDTO.java
@ToString
@Getter
public class PageDTO {
private int start, end, total, currentPage, totalEntries;
private boolean prev, next;
public PageDTO(Page<?> page){
this.currentPage = page.getNumber()+1; // 현재 페이지
this.total = page.getTotalPages(); // 총 페이지 수
this.totalEntries = (int)page.getTotalElements(); // 총 게시글 수
int tempEnd = (int)Math.ceil(this.currentPage/10.0)*10; // 페이징이 10개씩 보이도록 했을때을 현재 페이지가 들어가있는 마지막 번호
this.start = tempEnd - 9; // 페이징이 10개씩 보이도록 했을때을 현재 페이지가 들어가있는 첫번째 번호
this.prev = this.currentPage != 1; // 현재 페이지가 1페이지만 아니라면 TRUE
this.end = Math.min(this.total, tempEnd); // 둘중 작은게 end page
this.next = this.currentPage != this.total; // 현재 페이지가 마지막 페이지만 아니면 TRUE
}
}
이 값을 model에 담아서 화면에 잘~ 뿌려주면 끄읕
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] Querydsl 적용하기 (0) | 2020.03.16 |
---|---|
[Spring] JPA로 update 작업하기 (0) | 2020.03.13 |
[Spring] Thymeleaf를 이용해 데이터 다루기 (0) | 2020.03.13 |
[Spring] Swagger (0) | 2020.03.12 |
[Spring] Mustache (0) | 2020.03.12 |