Ordinamento dei risultati delle query con i dati di primavera

1. Introduzione

In questo tutorial, impareremo come ordinare i risultati delle query con Spring Data.

Innanzitutto, daremo uno sguardo allo schema dei dati che si desidera interrogare e ordinare.

E poi, ci immergeremo direttamente su come ottenere quei dati di primavera.

Iniziamo!

2. I dati del test

Di seguito abbiamo alcuni dati di esempio. Sebbene l'abbiamo rappresentato qui come una tabella, potremmo utilizzare uno qualsiasi dei database supportati da Spring Data per mantenerlo.

La domanda a cui vogliamo rispondere è: "Chi occupa quale posto sulla compagnia aerea?" ma per renderlo più user-friendly vogliamo ordinare per numero di posto.

Nome di battesimo Cognome Numero del posto
Jill fabbro 50
vigilia Jackson 94
Fred Bloggs 22
Ricki Bobbie 36
Siya Kolisi 85

3. Dominio

Per creare uno Spring Data Repository, dobbiamo fornire una classe di dominio e un tipo di id.

Qui abbiamo modellato il nostro passeggero come un'entità JPA, ma avremmo potuto modellarlo altrettanto facilmente come un documento MongoDB o qualsiasi altra astrazione del modello:

@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. Ordinamento con Spring Data

Abbiamo diverse opzioni a nostra disposizione per l'ordinamento con Spring Data.

4.1. Ordinamento con la parola chiave del metodo OrderBy

Un'opzione potrebbe essere quella di utilizzare la derivazione del metodo di Spring Data in base alla quale la query viene generata dal nome e dalla firma del metodo.

Tutto quello che dobbiamo fare qui per ordinare i nostri dati è includere la parola chiave OrderBy nel nome del nostro metodo insieme ai nomi delle proprietà e alla direzione (Asc o Desc) in base alla quale vogliamo ordinare.

Possiamo utilizzare questa convenzione per creare una query che restituisca i nostri passeggeri in ordine crescente per numero di posto:

interface PassengerRepository extends JpaRepository { List findByOrderBySeatNumberAsc(); }

Possiamo anche combinare questa parola chiave con tutti i nomi dei metodi Spring Data standard.

Vediamo un esempio di un metodo che trova i passeggeri per cognome e gli ordini per numero di posto:

List findByLastNameOrderBySeatNumberAsc(String lastName);

4.2. Ordinamento con un Ordina Parametro

La seconda opzione è quella di includere un Ordina parametro che specifica il nome della proprietà (s) e la direzione con la quale vogliamo un ordine:

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

In questo caso, stiamo usando il metodo findAll () e aggiungiamo l' opzione Sort quando lo chiamiamo.

Possiamo anche aggiungere questo parametro a una nuova definizione di metodo:

List findByLastName(String lastName, Sort sort);

Infine, se forse stiamo impaginando, possiamo specificare il nostro ordinamento in un oggetto Pageable :

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

5. conclusione

Abbiamo due semplici opzioni per ordinare i dati con Spring Data attraverso la derivazione del metodo utilizzando la parola chiave OrderBy o utilizzando l' oggetto Sort come parametro del metodo.

Come sempre, puoi trovare il codice su GitHub.