Pagination 구현하기

Sitehyun·2023년 2월 23일
0

IT Log

목록 보기
10/10

Java Spring Boot
Gradle
JDK 11
CrudRepository


과제 : 페이지네이션
조건 : 파라미터로 주어진 페이지와 사이즈의 값대로 포스트맨에 출력될 것
최신순(내림차순)으로 정렬될 것
페이지 정보 표현할 것


Controller

  • (1) @RequestParam 으로 받아올 인자들을 선정한다. defaultValue 는 파라미터를 입력받지 못했을 때의 기본값을 설정해준다. (Spring은 페이지 기본값이 0)
  • (2) Service 계층으로 파라미터를 던져주고 받아온 리턴값을 Page<Member>에 참조한다.
    그 후 pageInfo 라는 응답 객체에 Mapper를 사용하여 변환 참조해준다.
  • (3) 스프링부트 프레임워크에서 지원하는 Slice 인터페이스의 getContent() 를 사용하여 List<Member>에 값을 넣는다.
    여기서 Page 인터페이스는 Slice 를 상속함으로 Page타입으로도 메서드가 사용 가능하다.
    (2)와 마찬가지로 List<Member>를 맵퍼를 사용하여 응답 객체로 맵핑한다.
    나의 경우 마지막 ResponseEntity안에 두개의 파라미터를 넣어서 응답을 했지만 하나의 응답객체를 만들어도 무방하다.

Service

컨트롤러에서 받아온 인자를 서비스 계층으로 넘겨 Pageable타입의 변수에 할당한다. 이때 PageRequest.of는 페이지와 페이지 사이즈를 인수로 받으며 이를 repository에 자동으로 적용된다.

Repository

CrudRepository에서 지원하는 findAll 메서드에 Pageable타입의 변수를 넣어 우리가 원하는 페이지와 사이즈를 얻을 수 있다.

Mapper

Page 클래스에서 페이지의 수, 사이즈, 총 개시물 수, 총 페이지 수를 구할 수 있는 메서드를 제공해준다. 이를 응답객채로 보내주어 Page<Member>PageInfo로 매핑시킨다.

다시 컨트롤러 계층으로 이동하여 ResponseEntity로 응답을 하게 된다.

0개의 댓글

관련 채용 정보