Maison > Java > javaDidacticiel > Comment limiter les résultats de requête avec des annotations dans Spring Data JPA ?

Comment limiter les résultats de requête avec des annotations dans Spring Data JPA ?

DDD
Libérer: 2024-11-04 03:08:30
original
925 Les gens l'ont consulté

How to Limit Query Results with Annotations in Spring Data JPA?

setMaxResults Annotation pour Spring-Data-JPA

Spring-Data-JPA, une puissante bibliothèque d'abstraction de référentiel JPA, simplifie l'accès aux données dans Spring applications Java basées sur Cependant, définir le nombre maximum de résultats renvoyés par une requête à l'aide d'annotations a été un défi.

Solution Spring Data JPA 1.7.0 (Evans Release Train)

Dans Spring Data JPA 1.7.0 et versions ultérieures, la situation s'est améliorée. Vous pouvez désormais utiliser les mots-clés Top et First pour restreindre les résultats de requête. Par exemple :

findTop10ByLastnameOrderByFirstnameAsc(String lastname);
Copier après la connexion

Spring Data limitera automatiquement le nombre de résultats renvoyés au nombre spécifié (par défaut à 1 en cas d'omission). Le classement des résultats devient crucial, soit via une clause OrderBy, soit via un paramètre Sort dans la méthode.

Avant Spring Data JPA 1.7.0

Avant cette amélioration, la récupération des tranches de données nécessitait l'utilisation de la pagination. Spring Data utilise une interface Pageable pour les demandes de pagination et une abstraction de page pour la gestion des résultats.

Implémentez l'interface du référentiel comme suit :

public interface UserRepository extends Repository<User, Long> {

  List<User> findByUsername(String username, Pageable pageable);
}
Copier après la connexion

Utilisez l'interface pour obtenir les résultats :

Pageable topTen = new PageRequest(0, 10);
List<User> result = repository.findByUsername("Matthews", topTen);
Copier après la connexion

Si des informations contextuelles sont requises, utilisez Page comme type de retour :

public interface UserRepository extends Repository<User, Long> {

  Page<User> findByUsername(String username, Pageable pageable);
}
Copier après la connexion

Le code client peut utiliser cela information :

Pageable topTen = new PageRequest(0, 10);
Page<User> result = repository.findByUsername("Matthews", topTen);
Assert.assertThat(result.isFirstPage(), is(true));
Copier après la connexion

L'utilisation de Page comme type de retour déclenche l'exécution d'une requête de projection de nombre pour déterminer le nombre total d'éléments. De plus, pour garantir des résultats stables, incluez toujours les informations de tri dans la PageRequest.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal