Dieser Artikel beschreibt die Paging -Technologie von Hibernate Framework Data Paging. Teilen Sie es für Ihre Referenz wie folgt weiter:
1. Grundlegende Ideen des Datenpaging -Mechanismus:
(1) Bestimmen Sie die Aufzeichnungsspanne, dh die Anzahl der auf jeder Seite angezeigten Datensätze, die gemäß der tatsächlichen Situation bestimmt werden können.
(2) Erhalten Sie die Gesamtzahl der Datensätze, dh die Gesamtzahl der Aufzeichnungen, die auf der Seite angezeigt werden sollen. Ziel ist es, die Gesamtzahl der Verteilungen basierend auf dieser Zahl zu bestimmen.
(3) Bestimmen Sie die Gesamtzahl der Seiten nach dem Paging. Sie können die Formel verwenden: "Gesamtzahl der Seiten = (Gesamtzahl der Datensätze - 1) / Anzahl der pro Seite + 1 angezeigten Datensätze.
(4) Daten gemäß der aktuellen Anzahl der Seiten anzeigen. Wenn die Anzahl der Seiten weniger als 1 beträgt, wird sie gleich 1; Wenn es größer als die maximale Anzahl von Seiten ist, wird es gleich der maximalen Anzahl von Seiten.
(5) Abfrageergebnisse für und während der Verteilung der Schleifenanweisung anzeigen.
2. Holen Sie sich die vorherigen N -Datensätze:
SQL -Syntax:
Wählen Sie Top nfrom tablewhere ... bestellen nach ...
Zum Beispiel: Holen Sie sich die ersten 4 Datensätze
Wählen Sie Top 4 * aus dem Auto aus
3.. Paging -Daten erhalten:
String SQL = "Top"+PageSize+"* Aus dem Auto, wobei ID notin (obere"+(Seite)* pageSize+"ID von Car Order By Id ASC) By ID ASC ASC
Die Parameter sind wie folgt:
PageSize: Anzahl der pro Seite angezeigten Datensätze
Seite: Aktuelle Seitenanzahl
Auto: Datentabelle Name
4.Mysql -Datenbankpagination
Die MySQL -Datenbank bietet eine Limit -Funktion, die einfache Datenpaging ermöglicht.
Die Limit -Funktion wird verwendet, um die Anzahl der Zeilen zu begrenzen, die durch eine Anweisung ausgewählten Abfragen zurückgegeben werden.
Grammatik:
Wählen Sie ... aus Tabelle, wo ... bestellen Sie nach ... Grenze [Offset], Zeilen
Die Parameter sind wie folgt:
Offset: Gibt den Offset der ersten Zeile an, die zurückgegeben werden soll. Der Offset der Startlinie ist 0. Ist optional.
Zeilen: Gibt die Anzahl der zurückgegebenen Zeilen an.
5.Mysql erhält paginierte Daten
/**** @param Seite Welche Seite* @param pageSize Anzahl der pro Seite angezeigten Datensätze* @Return Rückgabeergebnis Set*/public resultSet findOrder (int Seite, int pageSize) {String stroSql = "Auswählen* aus dem Auto Order By ID Limit" + (Seite - 1)* PageSize + "," + PageSize + "; // SQL Query Anweisung Anweisung definieren pstmt = null; ResultSet rs = null; // Abfrageergebnis -Set -Objekt definieren {pstmt = conn.CreateStatement (); rs = pstmt.executeQuery (STRSQL); // Die Abfrageanweisung ausführen} catch (Ausnahme e) {e.printstacktrace (); } endlich {try {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Ausnahme e) {e.printstacktrace (); }} return rs; // Rückgabeergebnissatz}6. Daten Paging Beispiel
6.1Paging -Projektstruktur:
6.2Car.java Programmliste:
Paket com.cdd.util;/** * Fahrzeuginformationen * @Author xu qiao hui * */public Class Car {private String id; privater Stringname ;; Private String Marke; privates String -Enginenum; privater Stringstaat; private String -Bemerkungen; public co (int size) {} public Car () {} public co (String -ID, String -Name, String -Marke, String Enginenum, String State, String -Anmerkungen) {Super (); Id = id; this.name = name; this.brand = brand; this.enginenum = enginenum; this.state = Status; this.remarks = Bemerkungen; } public String getId () {return id; } public void setId (String id) {id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public String getBrand () {Return Brand; } public void setBrand (String Brand) {this.brand = Brand; } public String getenginenum () {return enginenum; } public void setenginenum (String enginenum) {this.enginenum = enginenum; } public String getState () {Return State; } public void setState (String Status) {this.state = STAAT; } public String getremarks () {return return returns; } public void setRemarks (String -Anmerkungen) {this.remarks = Bemerkungen; }}6.3GetConn.Java Programmliste:
Paket com.cdd.util; import Java.sql.*; öffentliche Klasse getConn {static {try {class.forname ("com.mysql.jdbc.driver"); // Ladedatenbank -Treiber in statischen Blöcken implementieren} catch (classNotFoundException e) {e.printstacktrace (); }} öffentliche Verbindung getConn () {Connection Connection = null; String url = "jdbc: mysql: // localhost: 3306/oa"; String username = "root"; String password = "1120"; try {Connection = driverManager.getConnection (URL, Benutzername, Passwort); System.out.println ("ok"); } catch (SQLEXception e) {// Todo automatisch generierter Fangblock e.printstacktrace (); } Rückgabeverbindung; } public static void main (String [] args) {getConn getConn = new getConn (); getConn.getConn (); }}6.4Paginationutil.java Programmliste:
Paket com.cdd.util; import Java.util.*; Import Java.sql. Verbindung conn = getConn.getConn (); // publiclist findGrade (int page, int pageSize) {string strsql = "Select * aus der Autobestellung nach ID -Limit" + (Seite - 1) * PageSize + "," + pageSize + ""; // SQL Query Anweisung Anweisung definieren pstmt = null; ResultSet rs = null; // Definieren Sie die Objektliste für Abfrageergebnisse lstlist = new ArrayList (); // Definieren Sie das Sammlungsobjekt Try {pstmt = conn.CreateStatement (); rs = pstmt.executeQuery (STRSQL); // Die Abfrageanweisung ausführen, wobei (rs.Next ()) {// Schleifen Sie durch das Abfrageergebnis ein, set car car = new Car (); // CAR CAR.SetID erstellen (rs.getString ("id")); car.setName (rs.getString ("name")); car.setBrand (rs.getString ("Marke")); car.setenginenum (Rs.getString ("enginenum")); car.setState (rs.getString ("Zustand")); car.setremarks (rs.getString ("Anmerkungen")); lstlist.add (Auto); // Fügen Sie der Sammlung ein Objekt hinzu}} catch (Ausnahme E) {e.printstacktrace (); } endlich {try {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Ausnahme e) {e.printstacktrace (); }} return lstlist; // Query Collection -Objekt zurückgeben}/ ** * * @param auf welcher Seite * @param pageSize Anzahl der pro Seite angezeigten Datensätze * @return return Ergebnissatz */ public resultset findOrder (int page, int pageSize) {String Strsql = "SELECT * Aus ID -Limit" + (Seite - 1) * PageSize + "," + PageSize + "; // SQL Query Anweisung Anweisung definieren pstmt = null; ResultSet rs = null; // Abfrageergebnis -Set -Objekt definieren {pstmt = conn.CreateStatement (); rs = pstmt.executeQuery (STRSQL); // Die Abfrageanweisung ausführen} catch (Ausnahme e) {e.printstacktrace (); } endlich {try {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Ausnahme e) {e.printstacktrace (); }} return rs; // Rückgabe des Ergebnisssatzes} public int allPage (int pageSize) {int allp = 0; try {Anweisung pstmt = conn.CreateStatement (); pstmt.execute ("Wählen Sie count (*) aus dem Auto"); ResultSet rs = pstmt.getResultSet (); System.out.print ("00"); Rs.Next (); int alle = rs.getint (1); System.out.print (alle); Allp = (alle - 1) / pageSize + 1; System.out.println (Allp); } catch (sqlexception e) {e.printstacktrace (); } return allp; } public static void main (String [] args) {paginationutil pageinationutil = new paginationutil (); LISTE LISTE = PAGINIINTUTIL.FINDGRADE (2, 6); für (int i = 0; i <list.size (); i ++) {car car = (car) list.get (i); System.out.println (car.getId () + "" + car.getName ()); }}}6.5Index.jsp Programmliste:
<%@ page Language = "java" import = "java.util.*, com.cdd.util.*;" pageCoding = "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> <html> <html> <html> <html> <html> <html> <html> <pace> <html> <pace> <html> <pace> <html> <- <title> my jsp 'index.jsp' Startseite </title> <meta http-äquiv = "pragma" content = "no-cache"> <meta http-äquiv = "cache-control" content = "no-cache"> <meta http-equiv content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <center> <h5> Vehicle information pagination display</h5> </center> <table align="center" BorderColor = "#CC00CC"> <tr> <td> Nummernschildnummer </td> <td> Fahrzeugname </td> <td> Marke </td> <td> Motornummer </td> </tru> <% paginationutil 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> </tr>"); } int alle = paginationutil.AllPage (3); %> </table> <center> Total <%= alle%> Seiten, die aktuelle Seite ist die <%= pageno%> Seite <%if (pageno> 1) {%> <a href = "index.jsp? no = <%= pageno - 1%>"> Vorgängeres Seite </a> <%}%> <%ifen if (pageno <%) oder href = "index.jsp? no = <%= pageno + 1%>"> nächste Seite </a> <%}%> </center> </body> </html>6.6 Zugriffsadresse:
http: // x-pc: 8080/paging/index.jsp
6.7 Screenshot des Laufergebnisses:
7. Hibernate -Pagination
7.1HQL -Paginierung
HQL implementiert hauptsächlich Datenpaging durch die Methode setfirstresult () und die setMaxResults () -Methode.
(1) Die Methode SetFirStresult (Int Index) wird verwendet, um die Datenstartindexposition abzurufen, und die Indexposition beginnt bei 0.
(2) Die Methode SetMaxResults (intmenge) wird verwendet, um die maximale Anzahl von Datensätzen zu berechnen, die zu jedem Zeitpunkt geladen werden, und standardmäßig stammt sie von der Set -Startindexposition bis zur letzten.
Zum Beispiel: Rufen Sie 5 Datensätze ab in der Indexposition 2 ab
Abfrage q = Sitzung.Createquery ("Form Car"); Q.SetFirstresult (2);7.2QBC -Pagination
Zum Beispiel: Rufen Sie 5 Datensätze ab in der Indexposition 2 ab
Kriterien c = Sitzung.Createcriteria ("Form Car"); C.SetFirStresult (2); C.SetMaxResults (5);7.3 Daten Paging -Methode:
/*** Verwenden Sie eine HQL -Anweisung für Seite Abfrage* @param HQL HQL Anweisung, die Abfrage sein muss getibernatetemplate () .executefind (new HibernateCallback () {// Methoden, die in der HibernateCallback -Schnittstelle implementiert werden müssen, löscht HibernateException, SQLEXception {// ausführende Hibernate -Pagination -Listen -Listen -Session. -Session. -Session. -Session. -Session. -Session. .SetMaxResults (pageSize) .List (); Rückgabeliste;}/*** Verwenden Sie die HQL -Anweisung für Seitenabfrage* @param HQL HQL -Anweisung, die abfragt werden muss FindBypage (endgültiger String -HQL, endgültiger Objektwert, endgültiger int offset, endgültig int pageSize) {// Abfrage durch eine HibernateCallback -Objektliste ausführen. SQLEXception {// Hibernate -Pagination -Abfrageliste result = session.setParameter (0, Wert) .SetFirstresult (Offset). Rückgabeliste;}/*** Verwenden Sie die HQL -Anweisung für Pagination -Abfragen* @param HQL HQL -Anweisung, die abfragt werden muss String -HQL, endgültiges Objekt [] Werte, endgültiger Offset, endgültig int pageSize) {// Abfrage durch eine HibernateCallback -Objektliste ausführen. {// Hibernate -Pagination Query Query = Session.createquery (HQL); Ergebnis; } }); Rückgabeliste;}Ich hoffe, dass die Beschreibung in diesem Artikel für Java -Programme aller hilfreich ist, die auf dem Hibernate -Framework basieren.