쿼리 메서드의 정렬과 페이징 처리

방세현·2023년 3월 26일
0

jpa

목록 보기
6/8

일반적인 쿼리문을 작성할 때 정렬을 사용하기 위해서는 'ORDER BY' 구문을 사용한다.
특정 컬럼을 기준으로 오름차순 또는 내림차순으로 정렬된 레코드 목록을 응답 받는다.


쿼리 메서드에서 정렬 처리방법


List<Product> findByNameOrderByNumberAsc(String name);
List<Product> findByNameOrderByNumberDesc(String name);
List<Product> findByNameOrderByStockAscPriceDesc(String name);

매개변수를 활용한 정렬 처리


메서드 이름에 정렬 키워드를 넣는 방법이 아닌 Sort 객체를 활용하여 정렬 기준을 설정할 수 있음

List<Product> findByName(String name, Sort sort)					(선언)
productRepository.findByName("pen". Sort.by(Order.asc("price")));	(구현)

매개변수를 활용한 페이징 처리


페이징이란 데이터베이스의 레코드를 개수로 나눠 페이지를 구분하는 것을 의미한다.
페이징 처리를 하면 리턴 타입으로 Page를 설정하고 매개변수로 Pageable 객체를 사용한다.

Page<Product> findByName(String name, Pageable pageable);
Page<Product> productPage = productRepository.findByName("펜", PageRequest.of(0, 2));

PageRequest의 of 메소드는 아래와 같이 설명할 수 있다.

of 메소드매게변수 설명비고
of(int page, int size)페이지 번호(zero-based), 페이지당 데이터 개수정렬x
of(int page, int size, Sort)페이지 번호, 페이지당 데이터 개수, 정렬sort에 의한 정렬
of(int page, int size, Direction, String --- properties)페이지 번호, 페이지당 데이터 개수, (enum) 정렬 방향, 컬럼Sort.by(direction, properties)에 의한 정렬

0개의 댓글