Jpa pagination avec des numéros et du suivant, précédent
Je m'excuse pour cette question si quelqu'un l'a déjà demandé et c'est pour poser une question stupide peut-être mais je suis nouveau à cela et vous sont des experts et j'aimerais apprendre à partir de votre expert en conseils et de l'expérience.
Je veux ajouter la pagination pour une application affichant 200 enregistrements par page. Le bas de la page doit avoir les chiffres. Si il y a 1050, la première page d'affichage d'100 et le bas de la page afficher les numéros 1,2,3,4,5 & 6.
Qu'est-ce que la logique générale pour accomplir cette?
Je sais que la base de données doit sélectionner 200 à chaque fois et je doit garder la trace du premier enregistrement.
- Est-il un moyen de savoir combien d'enregistrements seront renvoyés totale pour que je puisse savoir combien de chiffres à afficher sur le bas de la page? Il nécessite la sélection d'un count() ou quelque chose d'autre?
- Pour le 1050 enregistrements, Le nombre 1,2,3,4,5 & 6 affiche et en cliquant sur chacun nécessite un appel au serveur. Est-il un moyen de savoir combien d'enregistrements sera rendu dans l'appel suivant sur le serveur? Il nécessite la sélection d'un count() ou quelque chose d'autre?
OriginalL'auteur javafun | 2012-04-13
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le JPA Critères d'API pour accomplir cette tâche. En supposant que TypedQuery, vous pouvez utiliser
setFirstResult
etsetLastResult
à limiter le nombre d'enregistrements renvoyés à partir de la base de données. Bien sûr, les valeurs de ces méthodes dépend de ce que la page a été demandé, et le nombre d'enregistrements se sont affichés par page.Remarque: Cela suppose que la première page est de 1 (par opposition à zéro).
À obtenir un nombre d'enregistrements de l'exécution d'une norme de Critères de requête. À titre d'exemple:
Vous pouvez personnaliser le code ci-dessus pour effectuer le comptage par rapport à une autre requête. Enfin, vous avez besoin de communiquer le nombre total pour le client. Une façon de le faire est d'emballage de l'ensemble de résultats de votre requête dans un autre objet qui contient un attribut pour le décompte, ou retourne l'objet en tant que résultat de votre DAO appel. Ou sinon, vous pouvez stocker le comte attribut dans l'objet de votre demande portée.
OriginalL'auteur Perception
Vous effectuez généralement la même requête à l'exception de l'aide de count int la liste de sélection à la place des colonnes avant de lancer le réel de la requête pour trouver combien de pages il y a des. Obtenir une page spécifique dans hibernate peut alors se faire avec quelque chose comme:
Si l'exécution de la requête supplémentaire est trop cher une opération, alors vous pourriez envisager de fournir la prochaine/précédente liens ou, alternativement, en offrant plus de pages que nécessaire (par exemple en tant Que dernier chargement des données dans la vue) via ajax.
Pour l'affichage paginé résultats montrant notamment le numéro de page des liens, je voudrais suggérer (en supposant que vous utilisez des pages jsp pour afficher ces données) à l'aide de la affichage de la balise la bibliothèque de balises JSP. Affichage de la balise poignées de pagination et de l'ordre d'affichage des données tabulaires en supposant que vous pouvez obtenir à la JSP.
OriginalL'auteur krock
Oui, vous avez à faire un select count avant d'obtenir les lignes elles-mêmes.
OriginalL'auteur Jim Barrows
Ont un coup d'oeil à Spring Data JPA. C'est essentiellement travailler comment la Perception suggéré plus tôt, c'est juste que vous n'avez pas à le faire, le cadre fait pour vous. Vous obtenez la pagination et de tri par défaut (vous avez encore besoin de faire du filtrage vous-même si vous ne souhaitez pas utiliser Requête DSL).
Ils ont une 1h de vidéo sur la page principale, qui est une introduction rapide, mais vous aurez seulement besoin de regarder à environ 15 minutes pour avoir une idée de ce que l'id n'.
OriginalL'auteur Stef