[SPRING] Paging

야부엉·2023년 11월 22일

Paging 기능 구현

1. 개념

  • Spring Data에서 페이징 및 정렬 기능을 제공하기 때문에 손쉽게 페이징, 정렬을 구현 할 수 있다.
  • 아래와 같은 상황이라고 가정을 해보자.

2. Request(요청)

  • Clinet → Server
  1. 페이징
    • page : 조회할 페이지 번호 (1부터 시작)
    • size : 한 페이지에 보여줄 상품 개수 (10개로 고정!)
  2. 정렬
    • sortBy (정렬 항목)
      - id : Product 테이블의 id
      - title : 상품명
      - lprice : 최저가
    • isAsc (오름차순?)
      - true: 오름차순 (asc)
      - false : 내림차순 (desc)

3. Response(반환)

  • Server → Client
    - number : 조회된 페이지 번호 (0부터 시작)
    - content : 조회된 상품 정보 (배열)
    - size : 한 페이지에 보여줄 상품 개수
    - numberOfElements : 실제 조회된 상품 개수
    - totalElements : 전체 상품 개수 (회원이 등록한 모든 상품의 개수)
    - totalPages : 전체 페이지 수

    4. 구현 예시

    // 관심 상품 조회하기
    @GetMapping("/products")
    public Page<ProductResponseDto> getProducts(
           @RequestParam("page") int page,
           @RequestParam("size") int size,
           @RequestParam("sortBy") String sortBy,
           @RequestParam("isAsc") boolean isAsc,
           @AuthenticationPrincipal UserDetailsImpl userDetails) {
       // 응답 보내기
       return productService.getProducts(userDetails.getUser(),  page-1, size, sortBy, isAsc);
    }
    
profile
밤낮없는개발자

0개의 댓글