Comment mettre en œuvre la pagination au printemps de démarrage avec hibernate
Je suis à l'aide de spring boot avec mise en veille prolongée et je veux utiliser la pagination dans mon projet. J'ai cherché sur google et j'ai vu beaucoup d'exemples, mais je suis incapable de la mettre en œuvre mon projet.
Je veux que si je passe 1 à l'adresse de ma page 10 résultats devraient venir et si je passe 2 puis 10 résultats devraient venir et ainsi de suite.
Voici mon mon Dao
@Transactional
public interface PostDao extends CrudRepository<Post, Long>{
@Query(getAllPostsByRank)
List<Post> getAllPostsByRank();
final String getAllPostsByRank= "from Post order by value DESC";
}
Voici mon Contrôleur
@RequestMapping("/top")
@ResponseBody
public List<Post> getAllPosts(HttpServletRequest req, HttpServletResponse res) throws ServletException {
List<Post> postobj = postDao.getAllPostsByRank();
return postobj;
}
Et voici mon url:
http://localhost:8888/v1.0/post/top/1
S'il vous plaît suggérer.
avez-vous essayé PagingAndSortingRepository? (docs.printemps.io/printemps-données/données-communes/docs/1.6.1.PRESSE/...)
aucun n'essayez pas.. parce que incapable de comprendre que je suis nouveau au printemps de démarrage
pouvez-vous modifier mon code s'il vous plaît.
double possible de Requête Personnalisée au Printemps JPA Référentiel avec la Pagination
aucun n'essayez pas.. parce que incapable de comprendre que je suis nouveau au printemps de démarrage
pouvez-vous modifier mon code s'il vous plaît.
double possible de Requête Personnalisée au Printemps JPA Référentiel avec la Pagination
OriginalL'auteur Nadeem Ahmed | 2015-09-07
Vous devez vous connecter pour publier un commentaire.
Vérifier. Votre contrôleur de
Votre dao
intéressant, j'ai juste essayé avec cette mine à l'aide
from Foo order by id DESC
et il a jeté une exception au démarrage. il n'est pas avecfrom Foo f order by id DESC
.OriginalL'auteur artle
Je voudrais envisager d'utiliser
org.springframework.data.domain.Pageable
directement dans votre contrôleur. Cet objet peut ensuite être transmis à votre JPA couche où il va gérer le nombre de résultats renvoyés et de la taille.La grande chose au sujet de l'utilisation de
Pageable
est qu'il renvoie unePage
objet qui peut être utilisé sur le front-end pour la forme précédente/page suivante logique.Par défaut de cette classe utilise des paramètres d'url 'page " et " taille'; donc page=0&size=10 sera de retour les 10 premiers éléments.
Donc dans votre cas, le code pourrait ressembler à quelque chose comme:
Avis de l'annotation
@PageableDefault
est juste pour configurer les paramètres par défaut & il n'est pas nécessaire.Dans le front-end de la page suivante peut être
<a href="/top/pages?page=1">Next</a>
; il sera de retour une liste de Postes de 11 à 20.Si je suis en utilisant un DTO de retour, comment dois-je l'associer à une entité de recherche dans le dépôt, à l'aide de cette "Paginable" de l'interface?
Ne suis pas sûr que voulez-vous dire exactement; mais la
org.springframework.data.domain.Page
encapsule le contenu de votre DTO par conséquent, vous pouvez utiliserpage.getContent()
. Dans mon exemple, vous pouvez envisager lesPost
comme un DTO et la création se fait viaPage<Post> page = new PageImpl<>(typedQuery.getResultList(), pageable, totalRows);
ne fonctionne pas:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.domain.Pageable]: Specified class is an interface
êtes-vous sûr que c'est due à l'ajout de la
Pageable
paramètre à la méthode. C'est bizarre qu'il ne devrait pas cuaseBeanInstantiationException
.OriginalL'auteur Ithar
En œuvre de la pagination dans le Printemps de Démarrage est assez facile de seuls, vous devez suivre les étapes de base -
1 - s'Étend PagingAndSortingRepository dans le référentiel de l'interface
2 - Méthode de déclaration devrait ressembler à l'exemple ci-dessous
3 - Méthode de la mise en œuvre dans la classe de Service doit être comme sur l'exemple ci-dessous
4 - Contrôleur de code de classe devrait être comme ci-dessous
De l'avant la fin de l'appel devrait être comme ci-dessous
Pour plus de détails regardez ci-dessous la vidéo
Printemps De Démarrage : La Pagination De Base
Printemps De Démarrage : Pagination Avancée
Merci pour la lecture
OriginalL'auteur jeet singh parmar
Comment mettre en Œuvre Dynamique de la Pagination à l'Aide d'une Requête Native
Ici, vous pouvez trouver le référentiel et les couches de service et votre objet de transfert de données (DTO), qui sera utilisée pour la cartographie de notre résultat et de l'envoyer à la couche contrôleur.
Hibernate traduit votre requête comme suit:
Avantages et les Inconvénients
Pros: réduire le nombre de requêtes SQL générés, par rapport à l'utilisation de Données du Printemps. Ces requêtes complexes ne peuvent pas être écrites au Printemps de Données, et nous devons préciser notre requête comme un natif, qui peut encore être transférées en utilisant cette méthodologie.
Contre: "L'objet" tableau doit correspondre à un objet Java. Elle est douloureuse et difficile à maintenir.
Comment mettre en Œuvre OffsetLimit la Pagination Avec le Printemps de Données
Autant que je sache, il n'y a pas de "out-of-the-box" soutien pour ce que vous avez besoin à défaut Printemps, référentiels de Données. Mais vous pouvez en créer un personnalisé de mise en œuvre de Paginable des objets qui vont prendre limit/offset paramètres.
Faire un paginable objet et le passer à PaginationAndSortingRepository:
Il n'y a pas besoin de modifier le dépôt de la couche. Le seul changement que vous auriez besoin de faire est de la couche de service, comme suit:
Notez que vous n'avez pas besoin de mapper le résultat manuellement, et il faudra une bonne quantité de temps de développement.
OriginalL'auteur Manas Ranjan Mahapatra