Este artigo descreve a tecnologia de paginação de dados da estrutura do Hibernate. Compartilhe -o para sua referência, como segue:
1. Idéias básicas do mecanismo de paginação de dados:
(1) Determine o período de gravação, ou seja, determine o número de registros exibidos em cada página, que pode ser determinada de acordo com a situação real.
(2) Obtenha o número total de registros, ou seja, obtenha o número total de registros a serem exibidos na página. O objetivo é determinar o número total de distribuições com base nesse número.
(3) Determine o número total de páginas após a paginação. Você pode usar a fórmula: "Número total de páginas = (número total de registros - 1) / número de registros exibidos por página + 1".
(4) Exibir dados de acordo com o número atual de páginas. Se o número de páginas for menor que 1, será feito igual a 1; Se for maior que o número máximo de páginas, será feito igual ao número máximo de páginas.
(5) Exibir os resultados da consulta para e enquanto distribuição de declaração de loop.
2. Obtenha os N registros anteriores:
Sintaxe SQL:
Selecione a tabela superior da NFOMwhere ... Ordem por ...
Por exemplo: Obtenha os 4 primeiros registros
Selecione Top 4 * do carro
3. Obtenha dados de paginação:
String sql = "Selecione Top"+Pagesize+"* do carro onde o ID Notin (selecione TOP"+(Página-1)* Pagesize+"ID da Ordem do Carro por ID ASC) por ID ASC ASC
Os parâmetros são os seguintes:
PageSize: Número de registros exibidos por página
Página: contagem atual de páginas
Carro: Nome da tabela de dados
4. MYSQL PAGINAÇÃO DE DATABASE
O banco de dados MySQL fornece uma função de limite, que permite uma fácil paginação de dados.
A função Limit é usada para limitar o número de linhas retornadas por uma instrução SELECT HEFERS.
gramática:
Selecione ... da Tablewhere ... Order by ... Limit [Offset], linhas
Os parâmetros são os seguintes:
Offset: Especifica o deslocamento da primeira linha a ser devolvido. O deslocamento da linha de partida é 0. É opcional.
Linhas: especifica o número de linhas retornadas.
5.MySQL recebe dados paginados
/**** @param página Qual página* @param PageSize Número de registros exibidos por página* @return Return Result Set*/public ResultSet FindOrder (Int Page, int PageSize) {String strsql = "Selecione* FROM ORDEM DE CAR POLO LIMITE DE ID" + (Page - 1)* Pagesize + "," + Pagesize + "";; // Defina instrução SQL Construction Pstmt = null; ResultSet rs = null; // Definir resultado do resultado do resultado do objeto Try {Pstmt = Conn.Createstatement (); rs = pstmt.executeQuery (strSQL); // Execute a declaração de consulta} Catch (Exceção e) {E.PrintStackTrace (); } finalmente {tente {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Exceção e) {e.printStackTrace (); }} retorna rs; // Conjunto de resultados de retorno}6. Exemplo de paginação de dados
6.1 Estrutura do projeto de plena:
6.2car.java Lista de programas:
pacote com.cdd.util;/** * Informações do veículo * @author xu qiao hui * */public classe car {private string id; Nome de String Private ;; marca de string privada; Private String Enginenum; Estado de String Private; Comentários de cordas privadas; Public Car (int size) {} public Car () {} public Car (ID da sequência, nome da string, marca de string, string Enginenum, String State, String comentários) {super (); Id = id; this.name = nome; this.brand = marca; this.Enginenum = Enginenum; this.state = state; this.Remarks = observações; } public string getId () {return id; } public void setId (string id) {id = id; } public string getName () {return name; } public void setName (nome da string) {this.name = name; } public string getBrand () {return brand; } public void setBrand (marca de string) {this.brand = marca; } public string getenginenum () {return Enginenum; } public void setEnginenum (string Enginenum) {this.enginenum = Enginenum; } public string getState () {retornar estado; } public void setState (State String) {this.state = state; } public string getRemarks () {return comentários; } public void setRemarks (string observações) {this.Remarks = comentários; }}6.3getconn.java Lista de programas:
pacote com.cdd.util; importar java.sql.*; classe pública getConn {static {try {class.ForName ("com.mysql.jdbc.driver"); // Implementar o driver de banco de dados de carregamento em blocos estáticos} Catch (ClassNotFoundException e) {E.PrintStackTrace (); }} conexão pública getConn () {conexão de conexão = null; String url = "jdbc: mysql: // localhost: 3306/oa"; String userName = "root"; String senha = "1120"; tente {conexão = driverManager.getConnection (URL, nome de usuário, senha); System.out.println ("ok"); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } retornar conexão; } public static void main (string [] args) {getConn getConn = new getConn (); getConn.getConn (); }}6.4PaginationUtil.java Lista de programas:
pacote com.cdd.util; importar java.util.*; importar java.sql.*; classe pública paginationutil {getConn getConn = new getConn (); Conexão conn = getConn.getConn (); // Lista pública FindGrade (int página, int PAGESize) {String strsql = "Selecione * FROM ORDEM DE CARRO POR LIMITE DE ID" + (Page - 1) * PageSize + "," + Pagesize + ""; // Defina instrução SQL Construction Pstmt = null; ResultSet rs = null; // Defina o resultado da consulta Set Object List lstlist = new ArrayList (); // define o objeto de coleção tente {pstmt = conn.createstatement (); rs = pstmt.executeQuery (strSQL); // Execute a instrução de consulta enquanto (rs.Next ()) {// percorre o carro de resultado da consulta Car carro = novo carro (); // crie carro car.setId (rs.getString ("id")); car.setName (rs.getString ("nome")); car.setBrand (rs.getString ("marca")); car.setEnginenum (rs.getString ("Enginenum")); car.setState (rs.getString ("estado")); car.setRemarks (rs.getString ("observações")); lstlist.add (carro); // Adicione um objeto à coleção}} catch (Exceção e) {e.printStackTrace (); } finalmente {tente {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Exceção e) {e.printStackTrace (); }} retornar lstlist; // Retornar objeto de coleta de consultas}/ ** * * @param página Qual página * @param PageMize o número de registros exibidos por página * @return Return Result Set */ public ResultSet FindOrder (Int Page, int PageSize) {String strSQL = "Selecione * da Ordem do CAR por ID Limit" + (Page - 1) * Pagesize + "," " + Pagesize"; // Defina instrução SQL Construction Pstmt = null; ResultSet rs = null; // Definir resultado do resultado do resultado do objeto Try {Pstmt = Conn.Createstatement (); rs = pstmt.executeQuery (strSQL); // Execute a declaração de consulta} Catch (Exceção e) {E.PrintStackTrace (); } finalmente {tente {if (pstmt! = null) {rs.close (); pstmt.close (); }} catch (Exceção e) {e.printStackTrace (); }} retorna rs; // retorna o conjunto de resultados} public int allPage (int PageSize) {int allP = 0; tente {declaração pstmt = conn.createstatement (); pstmt.execute ("Selecione a contagem (*) do carro"); ResultSet rs = Pstmt.getResultSet (); System.out.print ("00"); rs.Next (); int all = rs.getInt (1); System.out.print (All); allP = (all - 1) / pagageSize + 1; System.out.println (allP); } catch (sqLexception e) {e.printStackTrace (); } retornar allP; } public static void main (string [] args) {paginationutil PageinationUtil = new PaginationUtil (); Lista Lista = PageinationUtil.findgrade (2, 6); for (int i = 0; i <list.size (); i ++) {carro car = (car) list.get (i); System.out.println (car.getId () + "" + car.getName ()); }}}6.5Index.jsp Lista de programas:
<%@ Page Language = "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> meu jsp 'index.jsp' página de partida </ititle> <meta http-equiv = "Pragma" content = "no-cache"> <meta http-equiv = "cache-controle" content = "no-cache"> <meta http-equiv = "expires" = "0"> <meta " Content = "Palavra-chave1, palavra-chave2, palavra-chave3"> <meta http-equiv = "description" content = "Esta é a minha página"> <!-<link rel = "Stylesheet" type = "text/css" href = "styles.css">-> </head> <Corn> <Cent> <H5> Informações sobre veículos de veículo <Hel5) borderColor = "#cc00cc"> <tr> <td> placa número da placa </td> <td> Nome do veículo </td> <td> marca </td> <td> número do motor </td> </tr> <% paginationUtil paginatil = new PaginationUTil (); int pageno = 0; if (request.getParameter ("não") == null) {pageno = 1; } else {pageno = Integer.parseint (request.getParameter ("não")); } Lista cc = paginationutil.findgrade (pageno, 3); Iterador i = cc.iterator (); while (i.hasNext ()) {carro de carro = (car) i.next (); out.print ("<tr> <td>" + car.getid () + "</td>" + "<td>" + car.getName () + "</td>" + "<td>" + car.getbrand () + "</td>" "<td>" + car.getEngiNum () + "" " } int all = paginationutil.allpage (3); %> </tabela> <Center> Total <%= All %> href = "Index.jsp? NO = <%= pageno + 1%>"> Próxima página </a> <%}%> </central> </body> </html>6.6 Endereço de acesso:
http: // xpc: 8080/paging/index.jsp
6.7 Captura de tela do resultado em execução:
7. Paginação de hibernato
7.1HQL Paginação
O HQL implementa principalmente a paginação de dados através do método setFirstresult () e o método setMaxResults ().
(1) O método setFirstResult (INT índice) é usado para recuperar a posição do índice de início de dados e a posição do índice começa em 0.
(2) O método SetMaxResults (INT) é usado para calcular o número máximo de registros carregados em cada vez e, por padrão, é da posição de índice inicial do início para a última.
Por exemplo: recuperar 5 registros a partir da posição 2 do índice 2
Consulta q = session.createquery ("forma de carro"); q.setFirstresult (2); q.setMaxResults (5);7.2qbc Paginação
Por exemplo: recuperar 5 registros a partir da posição 2 do índice 2
Critérios C = session.createcriteria ("Form Car"); C.setFirstresult (2); C.setMaxResults (5);7.3 Método de paginação de dados:
/*** Use a instrução HQL para consulta de página* @param HQL HQL Declaração que precisa ser consulta* @param Offset First Record Index* @param PageMize Número de registros a serem exibidos por página* @return todos os registros da página atual*/public list FindBypage (Final String HQL, OSTELET INT ATRAVÉS, Final Pages) {/ gethibernatetemplate () .ExecuteFind (new Hibernatecallback () {// Métodos que devem ser implementados na interface Hibernatecallback doinibernate (Sessão) lança HibernateException, sqLexception {// Execute hibernate pagationSetSoll Resold =.Cresterk, .setMaxResults (Pagesize) .list (); Lista de retorno;}/*** Use a instrução HQL para consulta de página* @param hql hql declaração que precisa ser consultada* @param Value Se o HQL tiver um parâmetro que precisa ser transmitido, o valor de Page* @Parurn do HQL que é publicado no número de registros de que o número de registros* @Parurn do número de registros* Página de registros* @Parurn do número de registros* Página de registros* Página de gravação* Página de gravação* @Paramsize o número de registros que não é o primeiro registro. FindBypage (HQL final da string, valor final do objeto, deslocamento final do INT, Final Int PageSize) {// Executa a consulta através de uma lista de objeto Hibernatecallback = GethibernateTemplate () .ExecuteFind (New Hibernatecallback () {// Métodos que devem ser implementados para implementar o hibernato SQLEXCECTION {// Execute o resultado da consulta de paginação de hibernato = session.createquery (HQL) // Parâmetros de pausa para HQL Declaration.setParameter (0, valor) .SetFirstresult (Offset). Lista de retorno;}/*** Use a instrução HQL para consulta de paginação* @param hql hql declaração que precisa ser consultada* Valores @param Se o HQL tiver vários parâmetros a serem transmitidos, os valores são o parâmetro de Página do HQL PAGEM PAGEM PAGEM PAGEM PAGEM @Página Página de registros* @param o número de registros do número de registros do número de registros* @PearMeD do HQL PagaMeed* FindBypage (Final String HQL, Valores Final Object [], Offset final Int, Final Int PageSize) {// Executa a consulta através de uma lista de objeto Hibernatecallback = GethibernateTemplate () .ExecuteFind (New Hibernatecallback () {// Métodos que devem ser implementados para implementar o hibernato HibernateException, SqLexception {// Executa a consulta de consulta de paginação de hibernato = session.createquery (HQL); .setMaxResults (Pagesize) .list (); Lista de retorno;}Espero que a descrição deste artigo seja útil para a programação Java de todos com base na estrutura do Hibernate.