web-dev-qa-db-ja.com

ソートとページングの両方でSpringデータJPAを使用して、すぐにデータを照会する方法は?

私はプロジェクトで Spring data JPA を試みています。 SortPageableの両方で、データを照会するためのすぐに使用可能なAPIがあるかどうかを知りたい。もちろん、私は自分でそのメソッドを書くことができることを知っています。すぐに使えるものがあるかどうか知りたいだけです。私のDAOはJpaRepositoryを拡張し、呼び出すことができる次のメソッドがあることがわかりました。

findAll();
findAll(Pageable pageable);
findAll(Sort sort);

しかし、findAll(Sort sort, Pageable pageable)のようなメソッドはないので、興味があります。

70
Tom

これを実現するには、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)に対して異なる方向を定義できるため、より柔軟です。

153

Pageableには、並べ替えを指定するオプションもあります。 Java doc から

PageRequest(int page, int size, Sort.Direction direction, String... properties) 

並べ替えパラメーターが適用された新しいPageRequestを作成します。

14
gkamal

Spring Pageable にはソートが含まれています。したがって、リクエストに値がある場合、ソートされたページング可能を返します。

リクエスト:domain.com/endpoint?sort=[FIELDTOSORTBY]&[FIELDTOSORTBY].dir=[ASC|DESC]&page=0&size=20

それは、指定された順序で提供されるフィールドでソートされたページング可能なソートを返します。

0
T04435
 public List<Model> getAllData(Pageable pageable){
       List<Model> models= new ArrayList<>();
       modelRepository.findAllByOrderByIdDesc(pageable).forEach(models::add);
       return models;
   }
0
Nazrul Kabir