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로 응답을 하게 된다.