Spring 페이징

Ada·2022년 10월 8일
0

항해TOL

목록 보기
31/63
post-custom-banner

Spring JPA 에서는 Pageable을 활용해서 Pagination을 구현할 수 있다.

‘page=3&size=10&sort=id,DESC’ 형식의 쿼리 파라미터를 요청하면 된다.

예시 코드 1 )ProductController

 // 로그인한 회원이 등록한 관심 상품 조회
    @GetMapping("/api/products")
    public Page<Product> getProducts(
            @RequestParam("page") int page,
            @RequestParam("size") int size,
            @RequestParam("sortBy") String sortBy,
            @RequestParam("isAsc") boolean isAsc,
            @AuthenticationPrincipal UserDetailsImpl userDetails
    ) {
        Long userId = userDetails.getUser().getId();
        page = page - 1;
        return productService.getProducts(userId, page, size, sortBy, isAsc);
    }

예시 코드 2 ) ProductService

// 회원 ID 로 등록된 상품 조회
    public Page<Product> getProducts(Long userId, int page, int size, String sortBy, boolean isAsc) {
        Sort.Direction direction = isAsc ? Sort.Direction.ASC : Sort.Direction.DESC;
        Sort sort = Sort.by(direction, sortBy);
        Pageable pageable = PageRequest.of(page, size, sort);

        return productRepository.findAllByUserId(userId, pageable);
    }

예시 코드 3 ) ProductRepository

public interface ProductRepository extends JpaRepository<Product, Long> {
    Page<Product> findAllByUserId(Long userId, Pageable pageable);
}
profile
백엔드 프로그래머
post-custom-banner

0개의 댓글