Queryresultaten sorteren met Spring Data

1. Inleiding

In deze tutorial gaan we dat doen leer hoe u de zoekresultaten kunt sorteren met Spring Data.

Eerst kijken we naar het schema van de gegevens die u wilt opvragen en sorteren.

En dan duiken we meteen in hoe we die Spring Data kunnen bereiken.

Laten we beginnen!

2. De testgegevens

Hieronder hebben we enkele voorbeeldgegevens. Hoewel we het hier als een tabel hebben weergegeven, kunnen we een van de databases gebruiken die door Spring Data worden ondersteund om het te behouden.

De vraag die we willen beantwoorden is: "Wie bezet welke stoel in de luchtvaartmaatschappij?" maar om dat gebruiksvriendelijker te maken, willen we sorteren op stoelnummer.

VoornaamAchternaamStoelnummer
JillSmith50
VooravondJackson94
FredBloggs22
RickiBobbie36
SiyaKolisi85

3. Domein

Om een ​​Spring Data Repository te maken, moeten we zowel een domeinklasse als een id-type opgeven.

Hier hebben we onze passagier gemodelleerd als een PPV-entiteit, maar we hadden het net zo goed kunnen modelleren als een MongoDB-document of een andere model abstractie:

@Entity class Passenger {@Id @GeneratedValue @Column (nullable = false) privé Lange id; @Basic (optioneel = false) @Column (nullable = false) private String firstName; @Basic (optioneel = false) @Column (nullable = false) private String lastName; @Basic (optioneel = false) @Column (nullable = false) private int seatNumber; // constructor, getters etc.}

4. Sorteren met Spring Data

Voor het sorteren met Spring Data hebben wij een aantal verschillende mogelijkheden tot onze beschikking.

4.1. Sorteren met de OrderBy Methode Trefwoord

Een optie zou zijn om de methode-afleiding van Spring Data te gebruiken, waarbij de query wordt gegenereerd op basis van de naam van de methode en de handtekening.

Het enige dat we hier hoeven te doen om onze gegevens te sorteren, is het trefwoord opnemen OrderBy in onze methode naam samen met de eigenschapnaam (-namen) en de richting (Asc of Desc) waarop we willen sorteren.

We kunnen deze conventie gebruiken om een ​​zoekopdracht te maken die onze passagiers in oplopende volgorde op stoelnummer retourneert:

interface PassengerRepository breidt JpaRepository {List findByOrderBySeatNumberAsc () uit; }

We kunnen dit trefwoord ook combineren met alle standaard Spring Data-methodenamen.

Laten we eens kijken naar een voorbeeld van een methode die passagiers op achternaam zoekt en bestellingen op stoelnummer:

Lijst findByLastNameOrderBySeatNumberAsc (String lastName);

4.2. Sorteren met een Soort Parameter

Onze tweede optie is om een Soort parameter specificeren van de eigenschapnaam (-namen) en de richting waarin we willen sorteren:

Lijst passagiers = repository.findAll (Sort.by (Sort.Direction.ASC, "seatNumber"));

In dit geval gebruiken we de vind alle() methode en het toevoegen van de Soort optie bij het aanroepen.

We kunnen deze parameter ook toevoegen aan een nieuwe methodedefinitie:

List findByLastName (String lastName, Sort sort);

Ten slotte, als we misschien aan het oproepen zijn, kunnen we onze sortering specificeren in een Pageable voorwerp:

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

5. Conclusie

We hebben twee eenvoudige opties voor het sorteren van gegevens met Spring Data door middel van methodeafleiding met behulp van de OrderBy trefwoord of met behulp van de Soort object als een methodeparameter.

Zoals altijd kun je de code vinden op GitHub.