Spring Pagination API (페이지네이션)

bagt13·2022년 7월 4일
5

Spring

목록 보기
1/12
post-thumbnail
post-custom-banner

repository

Spring Data JDBC가 제공하는 CrudRepository를 상속받아 repository를 구현.

findAllByOrderByMemberIdDesc(Pageable pagaeble);
=> memberId를 기준으로 내림차순으로(최신순) 모든 정보를 가져온다.

매개변수로 Pageable 타입의 객체를 넘겨주면, 객체의 정보를 읽고 page 조건을 설정하여 데이터를 가져온다.


Service

page 개수와 size(page별 데이터 개수)를 매개변수로 받아 PageRequest 객체를 생성하여 repository로 반환한다.

PageRequest는 Pageable을 구현하며, Sort 객체를 매개변수로 받아 정렬조건을 설정할수도 있다.


Controller

page와 size를 query parameter로 받는다.


page information

memberService에서 반환한 Page객체(memberPage)에서 제공하는 페이지 개수, 페이지 당 데이터 개수, 총 데이터 수 등의 정보를 이용해 페이지 정보를 담고있는 PageInfo 객체를 생성했다. (page는 0부터 시작이기 때문에 page-1)


members 반환 + dto로 변환

이후 Page객체의 getContent를 호출해 실제 데이터를 받아오고, Dto 객체로 변환한다.*


MemberDto

전체 memberpage정보를 함께 반환하는 별도의 Dto클래스(MemberAllDto) 생성 후, response와 pageInfo 객체를 Dto로 반환한다.


응답

요청 URI 형식 : http://localhost:8080/v10/members?page=1,size=20

profile
주니어 백엔드 개발자입니다😄
post-custom-banner

0개의 댓글