페이지네이션(Pagination) API

seongmin·2022년 10월 31일
0

Spring

목록 보기
28/38
post-thumbnail

페이지네이션(Pagination)이란?

예를 들어, 데이터 베이스에 회원 정보가 100건이 저장되어 있는데 클라이언트 쪽에서 100건의 데이터를 모두 요청하는 것이 아니라 한 페이지에 일정 개수 만큼만 나누어서 달라고 요청하는 것을 페이지네이션(Pagination)이라고 한다.

즉, page 번호가 1이고, 페이지에 포함되는 데이터의 개수가 10건일 경우,
데이터베이스의 테이블에서는 1 row부터 10 row까지만 조회되어야 한다.

만약 page 번호가 2이고, 페이지에 포함되는 데이터의 개수가 10건일 경우,
데이터베이스의 테이블에서는 11 row부터 20 row까지만 조회되어야 한다.

이렇게 조회를 하면 보통 가장 오래된 데이터부터 10건씩 조회되기 때문에 일반적으로 테이블의 row를 역순으로 10건씩 가져와서 최신 데이터부터 조회하는 경우가 대부분이다.

예제

  • 요구사항에 맞게 Controller, Service, Repository 클래스 및 Controller에서 리턴하는 Response용 DTO 클래스 수정

pageInfo

"pageInfo": {
        "page": 1,
        "size": 10,
        "totalElements": 20,
        "totalPages": 2
    }
  • 조회하는 page의 정보가 pageInfo 에 포함되어야 하기 때문에, pageInfo 클래스를 생성하여 정보 내용들을 필드로 넣어준다.

Controller

  • @RequestParam 을 사용하여 int page, int size 파라미터를 전달받아야 한다. 또한 그 값은 0보다 큰 숫자(@Positive 사용)여야 한다.

  • 실제 페이지는 1부터 시작하지만 데이터 엑세스 계층에서 페이지를 접근할 때는 0부터 시작하므로 page 에서 1을 빼준다.

Service

  • pagesize 를 매개변수로 받는 PageRequest 객체를 생성한다.

  • PageRequestPageable 인터페이스의 구현 클래스이다.

Repository

  • Spring Data JDBC가 제공하는 CrudRepository 를 상속받아 Repository를 구현한다.

DTO

  • 전체 멤버의 정보를 담고있는 datapageInfo 를 필드로 받는 Dto 클래스 생성한다.


  • Postman 을 사용해서 pagesize 파라미터 값을 입력한 후, GET 메서드 실행

  • 파라미터 값에 해당하는 내용 출력

0개의 댓글