Este artículo describe la tecnología de paginación de datos del marco Hibernate. Compártelo para su referencia, como sigue:
1. Ideas básicas del mecanismo de paginación de datos:
(1) Determine el lapso de grabación, es decir, determine el número de registros que se muestran en cada página, que se puede determinar de acuerdo con la situación real.
(2) Obtenga el número total de registros, es decir, obtenga el número total de registros que se mostrarán en la página. El propósito es determinar el número total de distribuciones basadas en este número.
(3) Determine el número total de páginas después de la paginación. Puede usar la fórmula: "Número total de páginas = (número total de registros - 1) / número de registros que se muestran por página + 1".
(4) Muestra datos de acuerdo con el número actual de páginas. Si el número de páginas es inferior a 1, se hace igual a 1; Si es mayor que el número máximo de páginas, se hace igual al número máximo de páginas.
(5) Muestra los resultados de la consulta a través de la distribución de la declaración de bucle para y mientras.
2. Obtenga los registros n anteriores:
Sintaxis SQL:
Seleccione Top Nfrom Tabla donde ... ordene por ...
Por ejemplo: obtenga los primeros 4 registros
Seleccione Top 4 * del coche
3. Obtenga datos de paginación:
String sql = "Seleccione Top"+PageSize+"* Desde el automóvil donde id note (seleccione Top"+(Page-1)* PageSize+"ID del orden del automóvil por ID ASC) Orden por ID ASC
Los parámetros son los siguientes:
PageSize: Número de registros que se muestran por página
Página: recuento de página actual
coche: nombre de la tabla de datos
4. Paginación de la base de datos de Mysql
La base de datos MySQL proporciona una función límite, que permite una fácil paginación de datos.
La función límite se usa para limitar el número de filas devueltas por una instrucción SELECT Consult.
gramática:
Seleccione ... de la tabla donde ... ordene por ... límite [compensación], filas
Los parámetros son los siguientes:
Offset: especifica el desplazamiento de la primera fila que se devolverá. El desplazamiento de la línea de inicio es 0. Es opcional.
Filas: especifica el número de filas devueltas.
5.MySQL obtiene datos paginados
/**** @Param Página ¿Qué página* @Param PageSize Número de registros mostrados por página* @@return return set de resultados*/public resultados findorDer (int página, int pageSize) {string strsql = "seleccione* desde el orden de la ID de pedido de ID" + (página - 1)* PageSize + "," + PageSize + ""; "; // Definir la declaración de consulta SQL Declaración pstmt = null; ResultSet rs = null; // Definir el objeto de conjunto de resultados de consulta prueba {pstmt = conn.createStatement (); rs = pstmt.executeQuery (strsql); // Ejecutar la instrucción de consulta} Catch (Exception e) {E.PrintStackTrace (); } finalmente {try {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Exception e) {E.PrintStackTrace (); }} return rs; // Return Result Set}6. Ejemplo de paginación de datos
6.1 Estructura del proyecto de compra:
6.2Car.Java Lista de programas:
paquete com.cdd.util;/** * Información del vehículo * @Author Xu Qiao Hui * */Public Class Car {private String id; nombre de cadena privada ;; marca de cuerdas privadas; Ingineno de cadena privada; estado de cadena privada; Observaciones de cadena privada; Public Car (int size) {} public Car () {} Public Car (ID de cadena, nombre de cadena, marca String, String EngineNum, String State, String Observaciones) {super (); Id = id; this.name = name; this.brand = marca; this.enginenum = Enginenum; this.state = state; this.remarks = observaciones; } public String getId () {return id; } public void setid (string id) {id = id; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public String getBrand () {Brand return; } public void setBrand (marca de cadena) {this.brand = brand; } public String getenGinEnum () {return Enginenum; } public void setenginenum (String Enginenum) {this.enginenum = Enginenum; } public String getState () {State de retorno; } public void setState (string state) {this.state = state; } public String getRemarks () {comentarios de retorno; } public void setRemarks (observaciones de cadena) {this.remarks = observaciones; }}6.3getConn.Java Lista de programas:
paquete com.cdd.util; import java.sql.*; public class getConn {static {try {class.forname ("com.mysql.jdbc.driver"); // Implementar el controlador de la base de datos de carga en bloques estáticos} Catch (ClassNotFoundException e) {E.PrintStackTrace (); }} Public Connection getConn () {Connection Connection = null; String url = "jdbc: mysql: // localhost: 3306/oa"; String UserName = "Root"; String Password = "1120"; intente {Connection = Drivermanager.getConnection (url, nombre de usuario, contraseña); System.out.println ("OK"); } Catch (Sqlexception e) {// TODO BLOCK AUTO GENERADO E.PRINTSTACKTRACE (); } conexión de retorno; } public static void main (string [] args) {getConn getConn = new getConn (); getConn.getConn (); }}6.4paginationutil.java Lista de programas:
paquete com.cdd.util; import java.util.*; import java.sql.*; public class PaginationUtil {getConn getConn = new getConn (); Conexión conn = getConn.getConn (); // Lista pública FindGrade (int Page, int PageSize) {String strsql = "Seleccionar * del orden de la ID de orden" + (página - 1) * PageSize + "," + PageSize + ""; // Definir la declaración de consulta SQL Declaración pstmt = null; ResultSet rs = null; // Definir la lista de objetos de conjunto de resultados de consulta lstList = new ArrayList (); // Defina el objeto de colección Try {pstmt = conn.createStatement (); rs = pstmt.executeQuery (strsql); // Ejecute la instrucción de consulta mientras (rs.next ()) {// bucle a través del resultado de la consulta establecer car por automóvil = nuevo automóvil (); // Crear coche Car.SetId (rs.getString ("id")); car.setName (rs.getString ("nombre")); car.setbrand (rs.getString ("marca")); car.setenginenum (rs.getString ("Enginenum")); Car.SetState (rs.getString ("estado")); Car.SetRemarks (rs.getString ("Observaciones")); lstlist.add (coche); // Agregue un objeto a la colección}} Catch (Exception e) {E.PrintStackTrace (); } finalmente {try {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Exception e) {E.PrintStackTrace (); }} return lstList; // Objeto de recopilación de consultas de retorno}/ ** * * @param página ¿Qué página * @param PageSize Número de registros que se muestran por página * @return return RESTUal set */ public denteSet FindOrder (int página int, int PageSize) {String strsql = "Seleccione * del orden de automóvil por límite de ID" + (página - 1) * PageSize + "," + PageSize + ";"; "; // Definir la declaración de consulta SQL Declaración pstmt = null; ResultSet rs = null; // Definir el objeto de conjunto de resultados de consulta prueba {pstmt = conn.createStatement (); rs = pstmt.executeQuery (strsql); // Ejecutar la instrucción de consulta} Catch (Exception e) {E.PrintStackTrace (); } finalmente {try {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Exception e) {E.PrintStackTrace (); }} return rs; // devuelve el conjunto de resultados} public int intente {instrucciones pstmt = conn.createStatement (); pstmt.Execute ("Seleccionar recuento (*) del automóvil"); ResultSet rs = pstmt.getResultSet (); System.out.print ("00"); rs.next (); int all = rs.getInt (1); System.out.print (todos); allp = (todos - 1) / PageSize + 1; System.out.println (Allp); } Catch (Sqlexception e) {E.PrintStackTrace (); } return allp; } public static void main (string [] args) {PaginationUtil PageinTil = new PaginationUtil (); Lista de lista = PageinationUtil.FindGrade (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 Lista de programas:
<%@ page idioma = "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> <head> <base href="<%=basePath%>"> <title> my jsp 'index.jsp' Página inicial </title> <meta http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expirea" contenido = "0"> <meta http-equiv = "keylals walks" clave " Content = "Keyword1, Keyword2, Keyword3"> <meta http-oquiv = "descripción" content = "Esta es mi página"> <!-<link rel = "stylesheet" type = "text/css" href = "styles.css">-> </thead> <cotule> <center> <hip5> Información del vehículo Pantalla </h5> </Center> </Center> borderColor = "#cc00cc"> <tr> <td> número de matrícula </td> <td> nombre del vehículo </td> <td> marca </td> <td> número de motor </td> </tr> <% PagationUtil PagationUtil = 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); Iterador 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 all = paginationUtil.AllPage (3); %> </bable> <center> total <%= all%> páginas, la página actual es <%= pageno%> página <%if (pageno> 1) {%> <a href = "index.jsp? no = <%= pageno - 1%>"> página anterior </a> <%}%> <%if (pageno <all) href = "index.jsp? No = <%= Pageno + 1%>"> Página siguiente </a> <%}%> </Center> </body> </html>6.6 Dirección de acceso:
http: // X-PC: 8080/Paging/index.jsp
6.7 Captura de pantalla del resultado de ejecución:
7. Paginación de hibernación
Paginación de 7.1Hql
HQL implementa principalmente la paginación de datos a través del método setFirStresult () y el método setmaxResults ().
(1) El método setFirStresult (int index) se utiliza para recuperar la posición del índice de inicio de datos, y la posición del índice comienza en 0.
(2) El método SetMaxResults (INT Cantion) se usa para calcular el número máximo de registros cargados en cada momento, y de manera predeterminada, es desde la posición SET Start Index hasta la última.
Por ejemplo: recuperar 5 registros a partir de la posición del índice 2
Consulta q = session.createQuery ("Form Car"); Q.SetFirStresult (2); Q.SetMaxResults (5);Paginación de 7.2qbc
Por ejemplo: recuperar 5 registros a partir de la posición del índice 2
Criterios c = session.createCriteria ("formulario de automóvil"); c.setFirStresult (2); c.setMaxResults (5);7.3 Método de paginación de datos:
/*** Use la instrucción HQL para la consulta de página* @param HQL HQL Declaración que debe ser consulta* @param offset First registro índice* @param PageSize Número de registros que se mostrarán por página* @return Todos los registros de la página*/lista pública FindByPage (final de cadena HQL, final de desplazamiento en introducción final, final int PageSize) {// ejecución de una lista de objetos de hibertreCallback. gethibernateTemplate () .ExCuteFind (new HibernateCallback () {// métodos que deben implementarse en la interfaz de interfaz de HibernateCallback doinhibernate (sesión session) lanza HibernateException, sqlexception {// ejecutar HiBernate Pagination Lista de consultoría result = Sess.CreatEryery (HQLeSLELT). .SetMaxResults (PageSize) .List (); Lista de retorno;}/*** Use la instrucción HQL para la consulta de página* @param HQL HQL HQL Declaración que debe consultar* @param Value Si HQL tiene un parámetro que debe aprobarse, el valor es el parámetro de la declaración HQL que se aprueba* @param Offset el primer índice de registro* @param pague findByPage (final de cadena HQL, valor de objeto final, offset final int, final int pageSize) {// ejecutar consulta a través de una lista de objetos hibernateCallback = gethiberNateTemplate () .exCuteFind (new HibernateCallback () {// Métodos que deben implementarse para implementar el HiberNateCalCalback Interface Public Object DoinHiberNate (Session Session). Sqlexception {// Ejecutar la lista de consultas de la paginación Hibernate result = session.createQuery (HQL) // Parámetros Lista de retorno;}/*** Use la instrucción HQL para la consulta de paginación* @param HQL HQL Declaración que se debe consultar* @param valores Si HQL tiene múltiples parámetros que se transmiten, los valores son la matriz de parámetros de HQL aprobado en HQL* @Param Offset First Index* @Param PageSize Number de registros que se muestran por página* @ReREdurn en la lista de los registros de la lista. String HQL, valores finales de objeto [], final de compensación de int, final int pageSize) {// ejecutar consulta a través de una lista de objetos hibernateCallback = gethiberNateTemplate () .exCuteFind (nuevo hibernateCallback () {// Métodos que deben ser implementados para implementar el objeto de HibebernateCall Interface Doinhibernate (Session Session) Session), Streding, shedeSctive, Sqatexctive, SQATECT. {// Ejecutar Hibernate Pagination Consulty Consulta de consulta = session.createQuery (HQL); Resultado de retorno; Lista de retorno;}Espero que la descripción en este artículo sea útil para la programación Java de todos en función del marco Hibernate.