일반적인 쿼리문을 작성할 때 정렬을 사용하기 위해서는 '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)에 의한 정렬 |