Sortering av søkeresultater med vårdata

1. Introduksjon

I denne opplæringen skal vi lære å sortere søkeresultater med Spring Data.

Først tar vi en titt på skjemaet til dataene som vil spørre og sortere.

Og så vil vi dykke rett inn i hvordan vi kan oppnå vårdataene.

La oss komme i gang!

2. Testdataene

Nedenfor har vi noen eksempler på data. Selv om vi har representert det her som en tabell, kan vi bruke hvilken som helst av databasene som støttes av Spring Data til å vedvare den.

Spørsmålet vi vil svare på er: "Hvem sitter på hvilket sete i flyselskapet?" men for å gjøre det mer brukervennlig ønsker vi å sortere etter setenummer.

FornavnEtternavnSetenummer
JillSmith50
EvaJackson94
FredBloggs22
RickiBobbie36
SiyaKolisi85

3. Domene

For å opprette et Spring Data Repository må vi oppgi en domeneklasse så vel som en id-type.

Her har vi modellert passasjeren vår som en JPA-enhet, men vi kunne like gjerne modellert den som et MongoDB-dokument eller en hvilken som helst annen modellabstraksjon:

@Entity class Passenger {@Id @GeneratedValue @Column (nullable = false) private Lang id; @Basic (optional = false) @Column (nullable = false) private String fornavn; @Basic (optional = false) @Column (nullable = false) private String etternavn; @Basic (valgfritt = false) @Column (nullable = false) private int seatNumber; // konstruktør, getters osv.}

4. Sortering med vårdata

Vi har noen forskjellige muligheter til å sortere med Spring Data.

4.1. Sortering med Rekkefølge etter Metode Nøkkelord

Et alternativ ville være å bruke Spring Datas metodeavledning der spørringen genereres fra metodens navn og signatur.

Alt vi trenger å gjøre her for å sortere dataene våre er å inkludere nøkkelordet Rekkefølge etter i metodens navn sammen med eiendomsnavnet (e) og retningen (Asc eller Desc) som vi ønsker å sortere etter.

Vi kan bruke denne konvensjonen til å lage et spørsmål som returnerer passasjerene i stigende rekkefølge etter setenummer:

grensesnitt PassengerRepository utvider JpaRepository {List findByOrderBySeatNumberAsc (); }

Vi kan også kombinere dette nøkkelordet med alle standardnavnene på Spring Data-metoden.

La oss se et eksempel på en metode som finner passasjerer med etternavn og bestillinger etter setenummer:

Liste findByLastNameOrderBySeatNumberAsc (String etternavn);

4.2. Sortering med en Sortere Parameter

Vårt andre alternativ er å inkludere en Sortere parameter spesifisere eiendomsnavnet (e) og retningen vi vil sortere etter:

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

I dette tilfellet bruker vi findAll () metode og legge til Sortere alternativet når du ringer til det.

Vi kan også legge til denne parameteren i en ny metodedefinisjon:

Liste findByLastName (String etternavn, Sorter sort);

Til slutt, hvis vi kanskje søker, kan vi spesifisere vår sortering i a Sidelig gjenstand:

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

5. Konklusjon

Vi har to enkle muligheter for å sortere data med Spring Data gjennom metodedivering ved hjelp av Rekkefølge etter søkeord eller bruke Sortere objekt som en metodeparameter.

Som alltid kan du finne koden på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found