Spring data JPA를 사용하여 Sort 및 Pageable을 모두 사용하여 즉시 데이터를 쿼리하는 방법은 무엇입니까?
저는 제 프로젝트에서 스프링 데이터 JPA를 시도하고 있습니다.데이터를 쿼리하는 즉시 사용할 수 있는 API가 있는지 알고 싶습니다.Sort
그리고.Pageable
물론 그 방법은 제가 직접 작성할 수 있다는 것은 알고 있습니다, 그냥 기존에 없던 방법이 있는지 알고 싶습니다.내 DAO 확장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
).
페이지 테이블에는 정렬을 지정하는 옵션도 있습니다.Java 문서에서
PageRequest(int page, int size, Sort.Direction direction, String... properties)
정렬 매개 변수가 적용된 새 페이지 요청을 만듭니다.
2020년에, 받아들여진 대답은 약간 구식입니다.PageRequest
는 더 이상 사용되지 않으므로 다음과 같은 코드를 사용해야 합니다.
Pageable page = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by("id").descending());
return repository.findAll(page);
Spring Pageable에는 정렬이 포함되어 있습니다.따라서 요청에 값이 있으면 정렬된 페이지 테이블을 반환합니다.
요청:domain.com/endpoint?sort=[FIELDTOSORTBY]&[FIELDTOSORTBY].dir=[ASC|DESC]&page=0&size=20
필드별로 정렬된 페이지 테이블이 제공된 순서대로 반환됩니다.
저의 경우, 사용하기 위해Pageable
그리고.Sorting
동시에 아래와 같이 사용했습니다.이 경우 페이지화 및 정렬을 사용하여 모든 요소를 가져갔습니다.id
내림차순으로:
modelRepository.findAll(PageRequest.of(page, 10, Sort.by("id").descending()))
위와 같이 요구 사항에 따라 2열로 데이터를 정렬할 수도 있습니다.
요청 URL에서 정렬 매개 변수 및 정렬 방향을 바로 제공할 수 있습니다.Spring Pageable은 URL 매개변수를 자동으로 구문 분석하고 Rest Controller에서 가져온 Pageable 객체를 생성합니다.수동 PageRequest/Pageable 객체 인스턴스화를 피하는 데 도움이 되기 때문에 가장 좋은 솔루션 중 하나라고 생각합니다(소트 방향 앞에 쉼표 문자 참고).
domain.com/endpoint?sort=[FIELD], [asc|desc]&page=3&size=100
추신: Spring 설명서에 설명된 정렬 방향 사용의 다른 예는 저에게 적합하지 않습니다(오래된 것일 수 있음).
public List<Model> getAllData(Pageable pageable){
List<Model> models= new ArrayList<>();
modelRepository.findAllByOrderByIdDesc(pageable).forEach(models::add);
return models;
}
언급URL : https://stackoverflow.com/questions/10527124/how-to-query-data-out-of-the-box-using-spring-data-jpa-by-both-sort-and-pageable
'programing' 카테고리의 다른 글
Numpy: 첫 번째 값 인덱스를 빠르게 찾습니다. (0) | 2023.07.26 |
---|---|
PHP에서 날짜별로 파일을 정렬하는 방법 (0) | 2023.07.26 |
Oracle Managed Data Access - 연결 요청 시간 초과 - 풀링 (0) | 2023.07.26 |
Grails, MySQL(MariaDB) - 더 적은 데이터에도 불구하고 max_allowed_packet 초과 (0) | 2023.07.26 |
MariaDB JDBC 경고를 억제하려면 어떻게 해야 합니까? (0) | 2023.07.26 |