Cet article décrit la technologie de pagination de données Hibernate Framework. Partagez-le pour votre référence, comme suit:
1. Idées de base du mécanisme de pagination des données:
(1) Déterminer la durée d'enregistrement, c'est-à-dire déterminer le nombre d'enregistrements affichés sur chaque page, qui peut être déterminé en fonction de la situation réelle.
(2) Obtenez le nombre total d'enregistrements, c'est-à-dire que le nombre total d'enregistrements doit être affiché sur la page. Le but est de déterminer le nombre total de distributions en fonction de ce nombre.
(3) Déterminer le nombre total de pages après la pagination. Vous pouvez utiliser la formule: "Nombre total de pages = (nombre total d'enregistrements - 1) / Nombre d'enregistrements affichés par page + 1".
(4) Afficher les données en fonction du nombre actuel de pages. Si le nombre de pages est inférieur à 1, il est fabriqué égal à 1; S'il est supérieur au nombre maximum de pages, il est fait égal au nombre maximum de pages.
(5) Afficher les résultats de la requête pour et bien que la distribution des instructions de boucle.
2. Obtenez les n enregistrements précédents:
Syntaxe SQL:
Sélectionnez Top Nfrom Tablewhere ... Commandez par ...
Par exemple: obtenez les 4 premiers enregistrements
Sélectionnez le top 4 * dans la voiture
3. Obtenez des données de pagination:
String sql = "SELECT TOP
Les paramètres sont les suivants:
PageSize: Nombre d'enregistrements affichés par page
Page: Nombre de page actuel
Car: Nom de la table de données
4. Pagination de la base de données MySQL
La base de données MySQL fournit une fonction limite, ce qui permet une pagination de données facile.
La fonction limite est utilisée pour limiter le nombre de lignes renvoyées par une instruction de requête sélectionnée.
grammaire:
Sélectionnez ... dans Tablewhere ... Order by ... Limit [Offset], lignes
Les paramètres sont les suivants:
Offset: Spécifie le décalage de la première ligne à retourner. Le décalage de la ligne de démarrage est 0. Est facultatif.
lignes: spécifie le nombre de lignes renvoyées.
5.MySQL obtient des données paginées
/ **** @param page Quelle page * @param pagesize Nombre d'enregistrements affichés par page * @return return Result Set * / public resultSet findOrder (int page, int pagesize) {String strSql = "SELECT * From Car Ordre by ID limit" + (page - 1) * PageSize + "," + pagesize + ""; // Définir l'instruction SQL Query Instruction PSTMT = NULL; ResultSet rs = null; // Définir l'objet de définition des résultats de la requête try {pstmt = conn.createStatement (); rs = pstmt.ExecuteQuery (strSQL); // Exécuter l'instruction de requête} catch (exception e) {e.printStackTrace (); } enfin {try {if (pstmt! = null) {Rs.close (); pstmt.close (); }} catch (exception e) {e.printStackTrace (); }} return rs; // Renvoie le jeu de résultats}6. Exemple de pagination de données
6.1 Structure du projet:
6.2car.java Liste des programmes:
package com.cdd.util; / ** * Informations sur le véhicule * @author xu qiao hui * * / public class car {private String id; Nom de chaîne privé ;; marque de cordes privée; Enginenium à cordes privées; État de chaîne privée; Remarques de chaîne privées; Public Car (int size) {} public Car () {} public Car (String id, String Name, String Brand, String Engineum, String State, String Remarks) {super (); Id = id; this.name = name; this.brand = marque; this.enginenum = engenum; this.state = state; this.remarks = remarques; } public String getID () {return id; } public void setID (String id) {id = id; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public String getBrand () {return marque; } public void setBrand (String Brand) {this.brand = marque; } public String getEngineNum () {return Enginenum; } public void SetEngineNum (String Enginenum) {this.enginenum = engenum; } public String getState () {return State; } public void setState (String State) {this.state = state; } public String getRemarks () {return Remarks; } public void setRemarks (String Remarks) {this.remarks = remarques; }}6.3getConn.java Liste des programmes:
package com.cdd.util; import java.sql. *; public class getConn {static {try {class.forname ("com.mysql.jdbc.driver"); // Implémentez le pilote de base de données de chargement dans des blocs statiques} catch (classNotFoundException e) {e.printStackTrace (); }} Connexion publique getConn () {connexion connexion = null; String url = "jdbc: mysql: // localhost: 3306 / oa"; String username = "root"; Chaîne mot de passe = "1120"; essayez {connection = driverManager.getConnection (URL, nom d'utilisateur, mot de passe); System.out.println ("OK"); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); } Retour Connexion; } public static void main (String [] args) {getConn getConn = new GetConn (); getConn.getConn (); }}6.4paginationutil.java Liste des programmes:
package com.cdd.util; import java.util. *; import java.sql. *; public class paginationUtil {getConn getConn = new GetConn (); Connexion conn = getConn.getConn (); // public list findgrader (int page, int pagesize) {String strSql = "select * From Car Order by id limit" + (page - 1) * PageSize + "," + pagesize + ""; // Définir l'instruction SQL Query Instruction PSTMT = NULL; ResultSet rs = null; // Définissez la liste des objets de résultat de requête LSTList = new ArrayList (); // Définissez l'objet de collection try {pstmt = conn.createStatement (); rs = pstmt.ExecuteQuery (strSQL); // Exécuter l'instruction de requête while (Rs.Next ()) {// Loop via le jeu de résultats de requête Car car = new Car (); // Créer une voiture car.setid (Rs.getString ("id")); car.setName (Rs.getString ("name")); car.setbrand (Rs.getString ("marque")); car.SetEngineNum (Rs.getString ("Enginenum")); car.setState (Rs.getString ("State")); car.setRemarks (Rs.getString ("Remarques")); lstList.add (voiture); // Ajouter un objet à la collection}} catch (exception e) {e.printStackTrace (); } enfin {try {if (pstmt! = null) {Rs.close (); pstmt.close (); }} catch (exception e) {e.printStackTrace (); }} return lstList; // Return Query Collection Object} / ** * * @param Page quelle page * @param pageSize Nombre d'enregistrements affichés par page * @return return Result Set * / public ResultSset FindOrder (int page, int pagesize) {String strSql = "SELECT * From Car Order by Id limit" + (page - 1) * PageSize + "," + PageSize + ""; // Définir l'instruction SQL Query Instruction PSTMT = NULL; ResultSet rs = null; // Définir l'objet de définition des résultats de la requête try {pstmt = conn.createStatement (); rs = pstmt.ExecuteQuery (strSQL); // Exécuter l'instruction de requête} catch (exception e) {e.printStackTrace (); } enfin {try {if (pstmt! = null) {Rs.close (); pstmt.close (); }} catch (exception e) {e.printStackTrace (); }} return rs; // renvoie le jeu de résultats} public int allPage (int pageSize) {int allp = 0; essayez {instruction PSTMT = Conn.CreatEstatement (); PSTMT.ExECUTE ("SELECT COUNT (*) From Car"); ResultSet rs = pstmt.getResultSet (); System.out.print ("00"); Rs.Next (); int all = Rs.getInt (1); System.out.print (all); allp = (tous - 1) / pagesize + 1; System.out.println (ALLP); } catch (sqlexception e) {e.printStackTrace (); } return allp; } public static void main (String [] args) {paginationutil pageinouLItil = new paginationUtil (); List list = PageinneULtil.Findradgrade (2, 6); for (int i = 0; i <list.size (); i ++) {car car = (car) list.get (i); System.out.println (car.getId () + "" + car.getName ()); }}}6.5Index.jsp Liste des programmes:
<% @ page langage = "java" import = "java.util. *, com.cdd.util. *;" pageencoding = "gbk"%> <% string path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/";;%> <! Doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> <Title> Mon jsp 'index.jsp' Page de départ </ title> <meta http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "keywords" contenu = "0"> <méta http-equiv = "keywords" Content = "Keyword1, Keyword2, Keyword3"> <meta http-equiv = "Description" content = "Ceci est ma page"> <! - <link rel = "stylesheet" type = "text / css" href = "Styles.css"> -> </ head> <fody> <enter> <h5> Informations de véhicule affichage </h5> BorderColor = "# CC00CC"> <TR> <TD> Numéro de plaque d'immatriculation </TD> <TD> Nom du véhicule </TD> <TD> Brand </TD> <TD> Numéro de moteur </td> </tr> <% PaginuLtil PaginationUtil = new PaginationUtil (); int pageno = 0; if (request.getParameter ("no") == null) {pageno = 1; } else {pageno = Integer.ParseInt (request.getParameter ("no")); } List cc = paginationutil.findgrade (pageno, 3); Iterator i = cc.iterator (); while (i.hasnext ()) {Car car = (car) i.next (); out.print ("<tr> <td>" + car.getId () + "</td>" + "<Td>" + car.getname () + "</td>" + "<Td>" + car.getBrand () + "</td>" + "<Td>" + Car.getEngineNum () + "</td> </r>"); } int all = paginationutil.allPage (3); %> </s tablel> <centre> Total <% = all%> pages, la page actuelle est la page <% = pageno%> page <% if (pageno> 1) {%> <a href = "index.jsp? no = <% = pageno - 1%>"> page précédente </a> <%}%> <% if (pageno <all) {%> <a href = "index.jsp? NO = <% = pageno + 1%>"> page suivante </a> <%}%> </ Center> </ Body> </html>6.6 Adresse d'accès:
http: // x-pc: 8080 / page / index.jsp
6.7 Capture d'écran du résultat en cours:
7. Pagination hibernate
Pagination 7.1hql
HQL implémente principalement la pagination de données via la méthode setFirStResult () et la méthode setMaxResults ().
(1) La méthode setFirStResult (int index) est utilisée pour récupérer la position de l'index de démarrage des données, et la position de l'index commence à 0.
(2) La méthode SetMaxResults (INT Montant) est utilisée pour calculer le nombre maximum d'enregistrements chargés à chaque fois, et par défaut, il est de la position de l'index de démarrage défini à la dernière.
Par exemple: récupérer 5 enregistrements à partir de la position d'index 2
Requête q = session.CreateeQuery ("Form Car"); q.setFirStResult (2); q.setMaxResults (5);7.2qbc Pagination
Par exemple: récupérer 5 enregistrements à partir de la position d'index 2
Critères C = Session.CreateCriteria ("Formulaire Car"); C.SetFirStResult (2); C.SetMaxResults (5);7.3 Méthode de pagination de données:
/ *** Utilisez une instruction HQL pour la requête de page * @Param HQL HQL Instruction qui doit être requête * @param offset First Record Index * @param PageSize Nombre of Records à afficher par page * @return Tous les enregistrements de la page actuelle * / Liste publique FindBypage (Final String HQL, final int, Liste d'objet final) {// Exécute Query GETHIBERNATETÉLÉ () .EXECUTEFIND (New HiberNateCallback () {// Méthodes qui doivent être implémentées dans l'interface HibernateCallback Objet public DoinHibernate (Session Session) lance HiberNateException, Sqlexception {// Execute Hibernate Pagination Query Result = Session.CreatElecty (HQLL) .SetFirSult). .setMaxResults (pagesize) .List (); Liste de retour;} / ** * Utilisez une instruction HQL pour la question de la page * @param hql hql instruction qui doit être interrogé * @param value si hql a un paramètre qui doit être adopté, la valeur est le paramètre de la déclaration HQL qui doit être affichée par page * @retrn tout FindByPage (Final String HQL, Valeur d'objet final, Final INT Offset, Final int PageSize) {// Exécuter la requête via une liste d'objets HiberNateCallback = GETHIBERNATETÉTÉ () .EXECUTEFIND (Nouvelle hibernatecallback () {// Méthodes qui doivent être mises en œuvre pour mettre en œuvre l'interface HiberNateXpelle SQLEXception {// Exécuter HiberNate Pagination Query Result = Session.CreateEQUERY (HQL) // PAUSE Paramètres pour HQL Statement.SetParAmter (0, Value) .SetFirSult (OFFSET). Liste de retour;} / ** * Utilisez l'instruction HQL pour la requête de pagination * @param hql hql instruction qui doit être interrogé * @param valeurs Si hql a plusieurs paramètres à adopter, les valeurs sont le tableau de paramètres de HQL adopté dans HQL * @Param Offset First Record Index * @Param PageSize Number Of Afficher par page * String HQL, Final Object [] Valeurs, Final int offset, Final int pagesize) {// Exécuter la requête via une liste d'objets HiberNateCallback = GETHIBERNATETÉTÉ () .ExECUTEFIND (Nouvelle hibernatecallback () {// Méthodes qui doivent être implémentées pour implémenter la conception interface de l'interface HiberNateChat, la session (session) présente la conception interface sqlex, la session de session). {// Exécuter la pagination HiberNate Query Query = Session.CreatEquery (HQL); résultat; } }); Liste de retour;}J'espère que la description de cet article sera utile à la programmation Java de chacun basée sur le cadre d'hibernate.