Spring

[Spring] Page<?> 객체에 있는 page 정보들 다루기

quedevel 2020. 3. 13. 16:05
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