Java Spring Boot
Gradle
JDK 11
CrudRepository
과제 : 페이지네이션
조건 : 파라미터로 주어진 페이지와 사이즈의 값대로 포스트맨에 출력될 것
최신순(내림차순)으로 정렬될 것
페이지 정보 표현할 것
@RequestParam
으로 받아올 인자들을 선정한다. defaultValue
는 파라미터를 입력받지 못했을 때의 기본값을 설정해준다. (Spring은 페이지 기본값이 0)Service
계층으로 파라미터를 던져주고 받아온 리턴값을 Page<Member>
에 참조한다.pageInfo
라는 응답 객체에 Mapper
를 사용하여 변환 참조해준다. Slice
인터페이스의 getContent()
를 사용하여 List<Member>
에 값을 넣는다.Page
인터페이스는 Slice
를 상속함으로 Page
타입으로도 메서드가 사용 가능하다.List<Member>
를 맵퍼를 사용하여 응답 객체로 맵핑한다.ResponseEntity
안에 두개의 파라미터를 넣어서 응답을 했지만 하나의 응답객체를 만들어도 무방하다.컨트롤러에서 받아온 인자를 서비스 계층으로 넘겨 Pageable
타입의 변수에 할당한다. 이때 PageRequest.of
는 페이지와 페이지 사이즈를 인수로 받으며 이를 repository
에 자동으로 적용된다.
CrudRepository에서 지원하는 findAll 메서드에 Pageable
타입의 변수를 넣어 우리가 원하는 페이지와 사이즈를 얻을 수 있다.
Page
클래스에서 페이지의 수, 사이즈, 총 개시물 수, 총 페이지 수를 구할 수 있는 메서드를 제공해준다. 이를 응답객채로 보내주어 Page<Member>
를 PageInfo
로 매핑시킨다.
다시 컨트롤러 계층으로 이동하여 ResponseEntity
로 응답을 하게 된다.