ResultSet à la pagination
Comment puis-je convertir objet Resultset à un paginé vue sur une JSP?
Par exemple, c'est ma requête et un jeu de résultats:
pst = con.prepareStatement("select userName, job, place from contact");
rs = pst.executeQuery();
source d'informationauteur Gnaniyar Zubair
Vous devez vous connecter pour publier un commentaire.
Pour commencer, vous devez ajouter un ou deux paramètres de la requête à la JSP:
firstrow
et (éventuellement)rowcount
. Lerowcount
peut aussi être laissé à l'écart et il est défini entièrement sur le côté serveur.Puis ajoutez un bouquet de boutons de pagination à la page JSP: le prochaine bouton, il devrait charger le
Servlet
pour incrémenter la valeur defirstrow
avec la valeur derowcount
. Le précédente bouton doit évidemment décrémenter la valeur defirstrow
avec la valeur derowcount
. Ne pas oublier de traiter les valeurs négatives et les débordements correctement! Vous pouvez le faire avec l'aide deSELECT count(id)
.Puis le feu d'un précis de la requête SQL pour récupérer un sous-liste des résultats. Le exacte de la syntaxe SQL, cependant, dépend de la DB utilisé. Dans MySQL et PostgreSQL, il est facile avec
LIMIT
etOFFSET
clauses:Dans Oracle vous avez besoin d'une sous-requête avec
rownum
clause qui devrait ressembler à:Dans DB2 vous avez besoin de l'OLAP fonction
row_number()
pour cela:Je ne fais pas MSSQL, mais c'est la syntaxe est similaire à DB2. Voir aussi cette rubrique.
Enfin, il suffit de présenter le sous-liste dans la page JSP de la manière habituelle, avec JSTL
c:forEach
.Noter que certains peut suggèrent que vous devez
SELECT
l'ensemble de la table et enregistrer lesList<Contact>
dans l'étendue de session et de faire usage denuméro de Liste de sous-liste()
pour paginer. Mais c'est loin de l'efficacité de mémoire avec des milliers de lignes et de plusieurs utilisateurs simultanés.Pour ceux qui sont intéressés dans les mêmes réponses dans JSF/MySQL contexte à l'aide de
h:dataTable
composant, vous pouvez trouver cet article utile. Il contient également quelques utiles indépendant de la langue maths pour obtenir le "Google-like" pagination bien travailler.Cet Oracle exemple est mauvais.
Oui, dans la sélection externe, après avoir bonne ROWNUM valeurs, mais c'est toujours le pseudo de la colonne, donc nous ne pouvons pas utiliser ENTRE. Nous avons besoin d'une plus sélect.
Le droit du code sql est:
Camarades, à l'aide de solides chaîne sql et de la Déclaration de la classe est SLOOOW. Oracle d'avoir à analyser votre SQL à chaque fois que votre exécuter.
Utilisation PreparedStatement et les paramètres de liaison.
Et la solution la plus rapide est de mettre votre code sql dans la procédure stockée oracle et l'utilisation CallableStatement l'appeler.
Voici un couple de choses que vous pouvez faire:
De déterminer le nombre total de pages basées sur le nombre d'items.
Affichage de vos articles basé sur le décalage que vous avez déterminé (uniquement à l'affichage de départ au point 48)
=======
C'est votre approche de base. Vous pouvez modifier ce avec:
Regardez en haut de la Liste de Valeur de Modèle, et de l'appliquer. C'est normalement la meilleure façon de traiter ces sortes de choses.
Vous pouvez utiliser displaytag pour paigination ou resultset, mais u télécharger un fichier jar à partir de displattag
tout d'abord vous créer un servlet
StudentList.java
{
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
}
//dao méthode