Existem dois métodos comuns de implementação de paginação:
1. Modifique o SQL toda vez que você gira a página, passa parâmetros relevantes para o SQL e vá para o banco de dados para descobrir os dados da página em tempo real e exibi -lo.
2. Descubra todos os dados em uma determinada tabela no banco de dados e, em seguida, obtenha e exiba determinados dados processando -os na lógica de negócios.
Para um sistema de gerenciamento simples com uma pequena quantidade de dados, o primeiro método de implementação é relativamente fácil de usar menos código para implementar a função da paginação. Este artigo também apresenta este método para você:
Trenó de código:
1. Page.Java
pacote com.cm.contract.common; importar org.apache.commons.lang.stringutils; importar org.apache.commons.lang.builder.tostringbuilder; / ** Classe de paginação*@Author Fengwei*@Date 2016-5-23*/ página pública Página implementa java.io.Serializable {private estático final serialversionUid = 1L; // Página anterior Private Boolean HasPrepage; // A próxima página Private Boolean HasnextPage; // Quantos itens são exibidos por página: padrão 20 privados longos e todas as páginas = 20L; // Número total de páginas Private Long TotalPage; // A página atual: Página padrão 1 Private Long CurrentPage = 1L; // Inicie o subscrito privado Long BeginIndex; // encerrar o subscrito privado Long EndinIndex; // Quantos TotalCount Private Long; // Classificação da coluna da coluna Private String SortName; // Status de classificação de string privada String SortState; // Classificação de informações privadas String SortInfo; // Classificação se deve classificar a classificação booleana privada = false; String privada DefaultInfo = ""; public String getDefaultInfo () {return defaultInfo; } public void setDefaultInfo (string defaultInfo) {this.defaultInfo = defaultInfo; } public string getSortinfo () {return sortinfo; } public void SetSortinfo (String SortInfo) {this.sortinfo = Sortinfo; } public string getSortName () {return sortName; } public void SetSortName (String SortName) {setPagesortState (SortName); } public string getSortState () {return sortState; } public void SetSortState (String SortState) {this.sortState = SortState; } public Page () {} / *** comumente usado, usado para calcular a paginação** / public página (TotalRecords long) {this.totalCount = totalRecords; SettotalPage (GettotalPage (TotalRecords)); } / ** * Use * Ao definir quantas entradas são exibidas em cada página * * / Public Page (Long EveryPage, TotalRecords longa) {this.everyPage = EveryPage; this.TotalCount = TotalRecords; SettotalPage (GettotalPage (TotalRecords)); } / *** Código de status do estado @param* @param valoriza quantas páginas para ir ou definir quantos itens exibem por página ou serem classificados como um nome de coluna de classificação* / public void pagestate (índice int, value string) {sort = false; switch (índice) {case 0: setEveryPage (long.parselong (valor)); break; caso 1: primeiro (); quebra; Caso 2: anterior (); quebra; Caso 3: Next (); quebrar; caso 4: last (); quebra; Caso 5: classificar = true; classificar (valor); quebrar; Caso 6: // para a página especificada setCurrentPage (long.parselong (valor)); quebrar; }} / *** página anterior* / private void primeiro () {currentPage = 1L; } private void anterior () {currentPage--; } private void next () {currentPage ++; } private void last () {currentPage = totalpage; } vind private Sort (string SortName) {// Defina o status de classificação setPagesortState (SortName); } / *** Calcule o número total de páginas** / Private Long GetTotalPage (TotalRecords longo) {Long TotalPage = 0l; EveryPage = EveryPage == NULL? 10L: Everypage; if (totalRecords % Everypage == 0) totalPage = totalRecords / Everypage; else {totalpage = totalRecords / Everypage + 1; } retornar totalpage; } public long getBeginIndex () {this.beginindex = (currentPage - 1) * EveryPage; retornar this.BeginIndex; } public void setBeginIndex (Long BeginIndex) {this.BeginIndex = BEGNIndex; } public long getCurrentPage () {this.currentPage = currentPage == 0? 1: CurrentPage; retornar this.currentPage; } public void setCurrentPage (Long CurrentPage) {if (0 == currentPage) {currentPage = 1L; } this.currentpage = currentpage; } public long getEveryPage () {this.everypage = EveryPage == 0? 10: Everypage; devolver isso. } public void setEveryPage (Long Everypage) {this.everyPage = EveryPage; } public boolean gethasnextpage () {this.hasnextpage = (currentpage! = totalpage) && (totalpage! = 0); retornar este.hasnextpage; } public void sethasnextpage (boolean hasNextPage) {this.hasnextpage = hasNextPage; } public boolean gethasprepage () {this.hasprepage = currentpage! = 1; devolver este.hasprepage; } public void sethasprepage (hasprepage boolean) {this.hasprepage = hasprepage; } public long getTotalPage () {return this.totalpage; } public void SettallPage (Long TotalPage) {if (this.CurrentPage> TotalPage) {this.currentPage = totalpage; } this.TotalPage = totalPage; } public long getTotalCount () {return this.totalCount; } public void SettalTalCount (Long TotalCount) {SettallPage (GetTotalPage (TotalCount)); this.TotalCount = TotalCount; } @Override public string tostring () {return tostringbuilder.reflectionToString (this); } /*** Defina o status de classificação** /private void setPagesortState (string newPagesortName) {// julgue se o campo de classificação anterior está vazio se (stringutils.isEmpty (sortName)) {// classificação padrão é a ordem ascendente this.sortState = pageutil.asc; this.sortinfo = pageutil.page_asc; } else {if (stringUtils.equalsignorecase (newPagesortName, sortName)) {// julga o valor do status de classificação SortState if (stringUtils.equalsignorecase (SortState, PageUtil.asc))) {this.sortState = pageutil.desc; this.sortinfo = pageutil.page_desc; } else {this.sortState = PageUtil.asc; this.sortinfo = pageutil.page_asc; }} else {// padrão this.sortState = pageutil.asc; this.sortinfo = pageutil.page_asc; }} SortName = newPagesortName.tolowerCase (); } public boolean iSSort () {return sort; } public void SetSort (classificação booleana) {this.sort = Sort; } public long getEndInindex () {this.endinIndex = (currentPage) * EveryPage; retornar endinIndex; } public void setendinIndex (long endinIndex) {this.endinIndex = endinIndex; }} 2.Pagestate.java
pacote com.cm.contract.common; importar org.apache.commons.lang.stringutils; /**Pagination status class* @author FENGWEI * @date 2016-5-23 */ public enum PageState { /** * Set how many pieces to display per page* */ SETPAGE, /** * Home page* */ FIRST, /** * Previous page* */ PREVIOUS, /** * Back page* */ NEXT, /** * Last page* */ LAST, /** * Sort* */ SORT, /** * How many pages to vá * */ gopage; / *** @Param Value Index Nome* @return Retorno índice Índice Índice Índice de índice*/ public static int getordinal (value string) {int index = -1; if (stringUtils.isEmpty (value)) {retornar índice; } String newValue = stringUtils.trim (value) .touppercase (); tente {index = valueof (newValue) .ordinal (); } catch (ilegalArgumentException e) {} Return Index; }} 3.PageUtil.java
/ ** * Classe da ferramenta de paginação * @author fengwei * @date 2016-5-23 */ public class PageUtil {public static final string ASC = "ASC"; public static final string desc = "desc"; public static final string page_desc = "↓"; public static final string page_asc = "↑"; public static final string page_null = ""; public static final string session_page_key = "página"; / *** Inicialize a classe de paginação* @param initpagesql consulta não fisicha sql* @param totalCount Número total de linhas* @param Índice status de paginação* @param valor apenas ao definir quantas peças são exibidas por página), o valor não será nulo, o número de strings (strings), que é exibido). if (índice <0) {página = nova página (totalCount); } mais { / ** quantas peças são exibidas por página* / long everpage = null == valor? 10: long.parselong (valor); / ** Obtenha a classe de paginação na sessão para facilitar a salvação do status da página de paginação*/ página = sessionPage; Page.seteverypage (everpage); Page.setTotalCount (TotalCount); } página de retorno; } / *** Quando a página clica: página inicial, página anterior, próxima página, última página, classificação e a página é a primeira página* @param índice status da paginação* @param Valor Nome do campo ou página é a primeira página* / public static Page ExecPage (Int Index, valor da string, página da sessão) {página = sessionPage; / ** Método de chamada para cálculo de paginação*/ Page.Pagestate (índice, valor); página de retorno; }} 4.DefaultController.java Esta parte pode ser usada com flexibilidade
pacote com.cm.contract.common; importar javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; importar javax.servlet.http.httpSession; importar org.springframework.web.bind.annotation.modelattribute; /** * Extrair solicitação e resposta pública: DefaultController Descrição: * * @author fengwei * @date 2016-5-6 15:30:32 * /classe pública DefaultController { /** * A classe de sentença de paginação de oracel de três camadas realiza os dados! * * @param querysql * A instrução SQL de consulta, não paginada * @param totalCount * O número total de entradas obtidas com base na consulta sql * @param colunNameScorasc * Nome da coluna + sorting): total de {totalcount) {TotalCount) (total do total de stang) (total do total de sql *; } / ** Status da página, esse status é construído na página e não tem nada a ver com negócios* / string de perigo = request.getParameter ("perigo"); String value = request.getParameter ("PageKey"); / ** Obtenha o índice para julgar o status do status da página*/ int index = pagestate.getordinal (percurso); Página página = nulo; / ** * ÍNDICE <1 Existem apenas dois estados 1 Quando a primeira chamada, não há valor na classe de status da página Retorno -1 2 quando a página define quantas peças são exibidas por página: * index = 0, quando há muitas peças exibidas por página, a classe de página precisa ser recalculada * */ PagePage = getPage (solicitação); if (índice <1) {página = PageUtil.inintpage (totalCount, índice, valor, sessionPage); } else {Page = PageUtil.execPage (índice, valor, sessionPage); } SetSession (solicitação, página); página de retorno; } página privada getPage (httpServletRequest solicitação) {página página = (página) request.getSession (). getAttribute (PageUtil.Session_Page_Key); if (página == null) {página = new Page (); } página de retorno; } SetSession privado de void (solicitação httpServletRequest, página da página) {request.getSession (). SetAttribute (PageUtil.Session_Page_Key, página); }} Como usar:
5. Controller.java
/ *** Condições de paginação adicionadas pelo modelo* O método de execução de execução está escrito na classe de ferramenta* Modelo @param*/ @Controller classe pública CMLogController estende o defaultController {@ReQuestMapping ("index.do") public ModelandView UserInto (ModelMap Model, String Username) {namestr = username; Model.Addattribute ("Nome de usuário", NameST); // Número de páginas de comprimento totalCount = logService.PageCounts (Model); // página de exibição da página = ExecutePage (solicitação, totalCount); if (Page.ISSORT ()) {Model.put ("OrderName", Page.getSortName ()); Model.put ("Descsc", Page.getSortState ()); } else {Model.put ("OrderName", "Logtime"); Model.put ("Descsc", "Desc"); } model.put ("startIndex", página.getBeginIndex ()); Model.put ("endindex", Page.getEndInindex ()); ModelAndView MV = new ModelAndView (); // Consulta de paginação loglist = logservice.pagelist (modelo); mv.addObject ("loglist", loglist); mv.setViewName ("/jsp/log"); retornar MV; }} 6. Várias declarações de consulta em Maybatis
// consulta de paginação <select id = "pagelist" parameterType = "map" resultmap = "baseresultmap"> selecione ttt.* De (selecione tt. Injeção de SQL. -> e tipo = #{type, jdbctype = varchar} </if> </where> encomende por $ {ordername} $ {descasc}) tt) ttt <where> <se test = startIndex! = Null e startIndex! <! [CDATA [e rn <= $ {endindex}]]> </if> </where> </select> // Número de páginas <select ID = "PageCounts" ParameterType = "Map" ResultType = "Long"> Selecione (*) de CM_LOG <Where> <fiST = "USERNAME! '%$ {nome de usuário}%' </if> </where> </leclect> 7. Página da recepção Index.jsp
// Basta adicionar a div no layout da página // nome de usuário como uma condição // <jsp: param name = "url" value = "/log/index.do?"/> O ponto de interrogação sem condição deve existir <body> <div align = "right" style = "altura: 20"> <jsp: incluir Page "/jsp/página.jsps" <jsp: "JSSP: 20"> <jsp: = "/jsp/página.jsp"> <jsp: " value = "/log/index.do? nome de usuário = $ {nome de usuário}"/> </jsp: incluir> </div> </body> 8. Page.jsp referenciado
<%@ página linguagem = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jstl/jstl/core"%<c: " <c: set var = "path" value = "$ {PagEContext.request.ContextPath}" /> <c: set var = "url" value = "$ {param.url}" /> <c: set var = "urlparams" value = "$ {param.urlParams}" /> <C: value = "$ {path} /$ {url}" /> <tr> <td colspan = "5"> $ {urlparams} total $ {Page.totalCount} Registros Total $ {Page.TotalPage} Pages por página Mostrar {Page.a) test = "$ {página.hasprepage eq false}"> << homepage <prepage </c: when> <c: caso contrário> <a href = "$ {paturl} & pergeacation = primeiro $ {urlparams}"> << homepage </a> <a href = "$ {pathur Página </a> </c: caso contrário> </c: escolha> || <c: escolha> <c: quando test = "$ {page.hasnextpage eq false}"> próxima página> Última página >> </c: when> <c: caso contrário href = "$ {paturl} e perigo = último $ {urlparams}"> Última página >> </a> </c: caso contrário> </c: escolha> <select name = "indexchange" id = "indexchange" onChange = "getCurrentpage (this.value); STEP = "1"> <opção value = "$ {index}" $ {Page.CurrentPage Eq Index? "Selected": "}> $ {Index} página </pption> </c: foreach> </leclect> Exibir por página: <select name =" EveryPage "id =" EveryPage "onchange =" setEverypage (this.value); "> <c: foreach =" pageCount "=" 5 "end =" {); value = "$ {PageCount}" $ {Page.EveryPage Eq pageCount? "Selected": ""}> $ {pageCount} bar </pption> </c: foreach> </leclect> </td> </td> </tr> <div style = 'display: none'> <a class = listlink id = "indexpageHref" href =#'> </a> </scrript = <ncript> document.getElementById ("IndexPageHref"); a.href = '$ {paturl} e perigo = gopage & pageKey ='+index+'$ {urlparams}'; A.SetAttribute ("OnClick", ''); A.Click ("Return false"); } função setEveryPage (EveryPage) {var a = document.getElementById ("indexpageHref"); var frenPage = document.getElementById ('indexChange'). a.href = '$ {paturl} e perigo = setPage & PageKey ='+EveryPage+'$ {urlparams}'; A.SetAttribute ("OnClick", ''); A.Click ("Return false"); } function SortPage (SortName) {var a = document.getElementById ("indexPageHref"); a.href = '$ {paturl} e perigo = sort & pageKey ='+sortName+'$ {urlparams}'; A.SetAttribute ("OnClick", ''); A.Click ("Return false"); } </script>O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.