私はプロジェクトで Spring data JPA を試みています。 Sort
とPageable
の両方で、データを照会するためのすぐに使用可能なAPIがあるかどうかを知りたい。もちろん、私は自分でそのメソッドを書くことができることを知っています。すぐに使えるものがあるかどうか知りたいだけです。私のDAOはJpaRepository
を拡張し、呼び出すことができる次のメソッドがあることがわかりました。
findAll();
findAll(Pageable pageable);
findAll(Sort sort);
しかし、findAll(Sort sort, Pageable pageable)
のようなメソッドはないので、興味があります。
これを実現するには、2つの方法があります。
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);
ご覧のとおり、2番目のフォームは、すべてのプロパティ(lastName ASC, salary DESC
)に対して異なる方向を定義できるため、より柔軟です。
Pageableには、並べ替えを指定するオプションもあります。 Java doc から
PageRequest(int page, int size, Sort.Direction direction, String... properties)
並べ替えパラメーターが適用された新しいPageRequestを作成します。
Spring Pageable にはソートが含まれています。したがって、リクエストに値がある場合、ソートされたページング可能を返します。
リクエスト: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;
}