Tri des résultats de requête avec les données Spring

1. Introduction

Dans ce didacticiel, nous allons apprendre à trier les résultats de la requête avec Spring Data.

Tout d'abord, nous allons examiner le schéma des données que vous souhaitez interroger et trier.

Et puis, nous allons plonger directement dans la façon de réaliser ces Spring Data.

Commençons!

2. Les données de test

Ci-dessous, nous avons quelques exemples de données. Bien que nous l'ayons représenté ici sous forme de table, nous pourrions utiliser l'une des bases de données prises en charge par Spring Data pour la conserver.

La question à laquelle nous voulons répondre est: "Qui occupe quel siège sur la compagnie aérienne?" mais pour rendre cela plus convivial, nous voulons trier par numéro de siège.

Prénom Nom de famille Numéro de siège
Jill Forgeron 50
Veille Jackson 94
Fred Bloggs 22
Ricki Bobbie 36
Siya Kolisi 85

3. Domaine

Pour créer un référentiel de données Spring, nous devons fournir une classe de domaine ainsi qu'un type d'identifiant.

Ici, nous avons modélisé notre passager en tant qu'entité JPA, mais nous aurions pu tout aussi bien le modéliser en tant que document MongoDB ou tout autre modèle d'abstraction:

@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. Tri avec Spring Data

Nous avons quelques options différentes à notre disposition pour le tri avec Spring Data.

4.1. Tri avec le mot- clé de la méthode OrderBy

Une option serait d'utiliser la dérivation de méthode de Spring Data dans laquelle la requête est générée à partir du nom et de la signature de la méthode.

Tout ce que nous devons faire ici pour trier nos données est d'inclure le mot-clé OrderBy dans le nom de notre méthode avec le (s) nom (s) de propriété et la direction (Asc ou Desc) par laquelle nous voulons trier.

Nous pouvons utiliser cette convention pour créer une requête qui renvoie nos passagers dans l'ordre croissant par numéro de siège:

interface PassengerRepository extends JpaRepository { List findByOrderBySeatNumberAsc(); }

Nous pouvons également combiner ce mot-clé avec tous les noms de méthode standard de Spring Data.

Voyons un exemple de méthode qui recherche les passagers par nom de famille et les commandes par numéro de siège:

List findByLastNameOrderBySeatNumberAsc(String lastName);

4.2. Tri avec un paramètre de tri

Notre deuxième option consiste à inclure un paramètre de tri spécifiant le (s) nom (s) de propriété et la direction dans laquelle nous voulons trier:

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

Dans ce cas, nous utilisons la méthode findAll () et ajoutons l' option Sort lors de son appel.

Nous pouvons également ajouter ce paramètre à une nouvelle définition de méthode:

List findByLastName(String lastName, Sort sort);

Enfin, si nous paginons peut-être, nous pouvons spécifier notre tri dans un objet Pageable :

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

5. Conclusion

Nous avons deux options simples pour trier les données avec Spring Data via la dérivation de méthode à l'aide du mot clé OrderBy ou en utilisant l' objet Sort comme paramètre de méthode.

Comme toujours, vous pouvez trouver le code sur GitHub.