Abfrageergebnisse mit Spring-Daten sortieren

Sortieren von Abfrageergebnissen mit Frühlingsdaten

1. Einführung

In diesem Tutorial gehen wir zulearn how to sort query results mitSpring Data.

Zunächst sehen wir uns das Schema der Daten an, die abgefragt und sortiert werden sollen.

Und dann werden wir gleich untersuchen, wie diese Frühlingsdaten erreicht werden können.

Lass uns anfangen!

2. Die Testdaten

Nachfolgend finden Sie einige Beispieldaten. Obwohl wir es hier als Tabelle dargestellt haben, können wir eine der von Spring Data unterstützten Datenbanken verwenden, um es beizubehalten.

Die Frage, die wir beantworten möchten, lautet: „Wer belegt welchen Platz in der Fluggesellschaft?“, Aber um dies benutzerfreundlicher zu gestalten, möchten wir nach Sitzplatznummer sortieren.

Vorname

Nachname

Sitznummer

Jill

Schmied

50

Eve

Jackson

94

Fred

Bloggs

22

Ricki

Bobbie

36

Siya

Kolisi

85

3. Domain

Um einSpring Data Repository zu erstellen, müssen wir eine Domänenklasse sowie einen ID-Typ angeben.

Hier haben wir unseren Passagier als JPA-Einheit modelliert, aber wir hätten ihn genauso gut modellieren können wie ein MongoDB-Dokument oder eine andere Modellabstraktion:

@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. Sortieren mit Federdaten

Für die Sortierung mit Spring Data stehen uns verschiedene Möglichkeiten zur Verfügung.

4.1. Sortieren mit dem MethodenschlüsselwortOrderBy

Eine Möglichkeit wäre die Verwendung der Methodenableitung von Spring Data, bei der die Abfrage aus dem Methodennamen und der Signatur generiert wird.

All we need to do here to sort our data is include the keyword OrderBy in our method name zusammen mit den Eigenschaftsnamen und der Richtung (Asc oder Dsc), nach der sortiert werden soll.

Wir können diese Konvention verwenden, um eine Abfrage zu erstellen, die unsere Passagiere in aufsteigender Reihenfolge nach Sitzplatznummer zurückgibt:

interface PassengerRepository extends JpaRepository {

    List findByOrderBySeatNumberAsc();
}

Wir können dieses Schlüsselwort auch mit allen standardmäßigen Spring Data-Methodennamen kombinieren.

Sehen wir uns ein Beispiel für eine Methode an, bei der Passagiere anhand der Bestellungen des Nachnamensandnach Sitzplatznummer gefunden werden:

List findByLastNameOrderBySeatNumberAsc(String lastName);

4.2. Sortieren mit einemSort Parameter

Our second option is to include a Sort parameter gibt den Eigenschaftsnamen und die Richtung an, nach der sortiert werden soll:

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

In diesem Fall verwenden wir die MethodefindAll()und fügen beim Aufruf die OptionSorthinzu.

Wir können diesen Parameter auch zu einer neuen Methodendefinition hinzufügen:

List findByLastName(String lastName, Sort sort);

Wenn wir vielleicht pagen, können wir unsere Sortierung in einemPageable-Objekt angeben:

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

5. Fazit

Wir haben zwei einfache Möglichkeiten, Daten mit Spring Data durch Methodenableitung mit dem SchlüsselwortOrderBy oder mit dem ObjektSort als Methodenparameter zu sortieren.

Wie immer finden Sie den Codeover on GitHub.