Springデータによるクエリ結果のソート

データ]

1.はじめに

このチュートリアルでは、https://www.baeldung.com/spring-data[Spring Data]を使用して クエリ結果を並べ替える方法 を学習します。

まず、クエリとソートを行いたいデータのスキーマを見てみましょう。

そして、そのSpring Dataをどのように達成するかについて、私たちはすぐに理解しよう。

始めましょう!

2.テストデータ

以下にデータ例をいくつか示します。ここではテーブルとして表現しましたが、それを永続化するためにSpring Dataでサポートされているデータベースのどれでも使用できます。

私たちが答えたい質問は、「誰が航空会社のどの座席を占有しているのか」ですが、それをよりユーザーフレンドリーにするために座席番号でソートしたいと思います。

| ======================== | |名|姓|座席番号|ジル|スミス| 50 |イブ|ジャクソン| 94 |フレッド|ブログ| 22 |リッキー|ボビー| 36 |シヤ|コリシ| 85 | ========================= =========

3.ドメイン

Spring Data Repository を作成するには、ドメインクラスを提供する必要がありますid型

ここでは、パッセンジャーをJPAエンティティとしてモデル化しましたが、MongoDBドキュメントまたは他のモデル抽象化と同じくらい簡単にモデル化することができました。

@Entity
class Passenger {

    @Id
    @GeneratedValue
    @Column(nullable = false)
    private Long id;

    @Basic(optional = false)
    @Column(nullable = false)
    private String firstName;

    @Basic(optional = false)
    @Column(nullable = false)
    private String lastName;

    @Basic(optional = false)
    @Column(nullable = false)
    private int seatNumber;

   //constructor, getters etc.
}

4. Springデータによるソート

Spring Dataによるソートには、いくつかの選択肢があります。

4.1. OrderBy メソッドのキーワードで並べ替え

1つの選択肢は、クエリがメソッド名とシグニチャから生成されるSpring Dataのメソッド派生を使うことです。

  • データを並べ替えるためにここで行う必要があるのは、並べ替えたいプロパティの名前と方向(AscまたはDsc)と共に、メソッド名にキーワード OrderBy を含めることだけです。

この規約を使用して、座席番号の昇順で乗客を返すクエリを作成できます。

interface PassengerRepository extends JpaRepository<Passenger, Long> {

    List<Passenger> findByOrderBySeatNumberAsc();
}

このキーワードをすべての標準Spring Dataメソッド名と組み合わせることもできます。

姓と座席番号の順で乗客を検索する方法の例を見てみましょう。

List<Passenger> findByLastNameOrderBySeatNumberAsc(String lastName);

4.2. Sort パラメータを使用したソート

  • 2番目のオプションは 並べ替え パラメータを指定することです** ソートしたい名前と方向

List<Passenger> passengers = repository.findAll(Sort.by(Sort.Direction.ASC, "seatNumber"));

この場合は、 findAll() メソッドを使用し、それを呼び出すときに Sort オプションを追加します。

このパラメータを新しいメソッド定義に追加することもできます。

List<Passenger> findByLastName(String lastName, Sort sort);

最後に、おそらくページングを行っている場合は、https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Pageable.html[ Pageable でソートを指定できます。]オブジェクト:

Page<Passenger> page = repository.findAll(PageRequest.of(0, 1, Sort.by(Sort.Direction.ASC, "seatNumber")));

5.まとめ

OrderBy キーワードを使用するか、または httpsを使用してメソッドを派生させることで、Spring Dataでデータをソートするための2つの簡単なオプションがあります。メソッドパラメータとして/Sort.html[Sort] オブジェクト。

いつものように、あなたはコードhttps://github.com/eugenp/tutorials/tree/master/persistence-modules/spring-data-jpa[over on GitHub]を見つけることができます。