반응형
Sort 및 Pageable 모두에서 Spring 데이터 JPA를 사용하여 데이터를 즉시 쿼리하는 방법은 무엇입니까?
내 프로젝트에서 Spring 데이터 JPA 를 시도하고 있습니다. Sort
및 .NET 모두를 사용 하여 데이터를 쿼리하는 기본 API가 있는지 알고 싶습니다 Pageable
. 물론이 방법을 직접 작성할 수 있다는 것을 알고 있습니다. 바로 사용할 수있는 방법이 있는지 알고 싶습니다. 내 DAO extends JpaRepository
, 호출 할 수있는 다음 메서드가 있음을 알았습니다.
findAll();
findAll(Pageable pageable);
findAll(Sort sort);
근데라는 방법이 없어서 findAll(Sort sort, Pageable pageable)
궁금하다.
이를 달성하는 두 가지 방법이 있습니다.
final PageRequest page1 = new PageRequest(
0, 20, Direction.ASC, "lastName", "salary"
);
final PageRequest page2 = new PageRequest(
0, 20, new Sort(
new Order(Direction.ASC, "lastName"),
new Order(Direction.DESC, "salary")
)
);
dao.findAll(page1);
보시다시피 두 번째 형식은 모든 속성 ( lastName ASC, salary DESC
)에 대해 다른 방향을 정의 할 수 있으므로 더 유연합니다 .
Pageable에는 정렬을 지정하는 옵션도 있습니다. 로부터 자바 문서
PageRequest(int page, int size, Sort.Direction direction, String... properties)
정렬 매개 변수가 적용된 새 PageRequest를 만듭니다.
Spring Pageable 에는 Sort가 포함되어 있습니다. 따라서 요청에 값이 있으면 정렬 된 페이징 가능 항목이 반환됩니다.
의뢰: domain.com/endpoint?sort=[FIELDTOSORTBY]&[FIELDTOSORTBY].dir=[ASC|DESC]&page=0&size=20
제공된 순서로 제공된 필드별로 정렬 된 페이징 가능 항목을 반환해야합니다.
public List<Model> getAllData(Pageable pageable){
List<Model> models= new ArrayList<>();
modelRepository.findAllByOrderByIdDesc(pageable).forEach(models::add);
return models;
}
반응형
'Development Tip' 카테고리의 다른 글
DateTime 개체에서만 날짜 또는 시간 가져 오기 (0) | 2020.10.31 |
---|---|
ASP.Net MVC에서 전역 필터를 선택적으로 비활성화하는 방법 (0) | 2020.10.31 |
AngularJS-컨트롤러에서 모듈 상수 가져 오기 (0) | 2020.10.31 |
Postgres.app으로 Mavericks에 pg gem을 설치할 수 없습니다. (0) | 2020.10.30 |
google-places-api를 사용하는 간단한 HTML 페이지에 대한 ApiNotActivatedMapError (0) | 2020.10.30 |