Il existe deux méthodes de mise en œuvre de pagination courantes:
1. Modifiez SQL chaque fois que vous tournez la page, transmettez les paramètres pertinents à SQL et accédez à la base de données pour trouver les données de la page en temps réel et afficher.
2. Découvrez toutes les données d'un certain tableau de la base de données, puis obtenez et affichez certaines données en les traitant dans la logique métier.
Pour un système de gestion simple avec une petite quantité de données, la première méthode d'implémentation est relativement facile à utiliser moins de code pour implémenter la fonction de la pagination. Cet article vous présente également cette méthode:
Extrait de code:
1. Page.java
package com.cm.contract.common; import org.apache.commons.lang.stringutils; import org.apache.commons.lang.builder.tostringBuilder; / ** Classe de pagination * @Author Fengwei * @Date 2016-5-23 * / La page de classe publique implémente Java.io.Serializable {private static final long SerialVersionUID = 1l; // Page précédente Boolean Hasprepage; // La page suivante privée booléenne HasnextPage; // Combien d'éléments sont affichés par page: par défaut 20 privé long chaque page = 20L; // Nombre total de pages Private Long Total Page; // La page actuelle: Page par défaut 1 privé Long CurrentPage = 1l; // Démarrer l'indice privé Long BeginIndex; // terminer les indices privés longInIndex; // Combien de choux longs privés; // Tri Nom de la colonne Private String SortName; // Tri Statut Private String SortState; // Tri des informations privées String SortInfo; // Triage de trier privé Boolean Sort = false; chaîne privée defaultInfo = ""; String public getDefaultInfo () {return defaultInfo; } public void setDefaultInfo (String defaultInfo) {this.defaultInfo = defaultInfo; } public String getsORInfo () {return triSinfo; } public void setsortinfo (String triNfo) {this.sortinfo = triNInfo; } 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 () {} / ** * couramment utilisé, utilisé pour calculer la pagination * * / PAGE PUBLIC (Long TotalRecords) {this.totalCount = TotalRecords; SettotalPage (getTotalPage (totalRecords)); } / ** * Utiliser * Lors de la définition du nombre d'inscriptions affichées sur chaque page * * / PAGE PUBLIC (Long Everypage, Long TotalRecords) {this.everyPage = EveryPage; this.totalCount = totalRecords; SettotalPage (getTotalPage (totalRecords)); } / ** * @param Code d'état de l'état * @param Valeur combien de pages aller ou définir le nombre d'éléments à afficher par page ou être trié sous forme de nom de colonne de tri * / public void Pagestate (int index, valeur de chaîne) {tri = false; Switch (index) {case 0: seteVeryPage (long.parselong (valeur)); Break; Cas 1: First (); pause; Cas 2: Pridif (); pause; Cas 3: suivant (); pause; Cas 4: Last (); Break; Cas 5: Sort = true; Tri (valeur); Break; Cas 6: // à la page spécifiée setCurrentPage (long.parselong (valeur)); casser; }} / ** * Page précédente * / private void first () {currentPage = 1l; } private void précédemment () {currentPage--; } private void suivant () {currentPage ++; } private void last () {currentPage = totalPage; } private void Sort (String sortName) {// Définissez le statut de tri setPagesOrtState (sortName); } / ** * Calculez le nombre total de pages * * / private long getTotalPage (long totalRecords) {long totalpage = 0l; EveryPage = EveryPage == null? 10L: Everypage; if (totalRecords% everypage == 0) totalpage = totalRecords / everypage; else {totalPage = TotalRecords / EveryPage + 1; } return totalpage; } public long getbeginIndex () {this.beginIndex = (currentPage - 1) * EveryPage; return this.beginIndex; } public void setbeginIndex (long beginIndex) {this.beginIndex = beginIndex; } public long getCurrentPage () {this.currentPage = currentPage == 0? 1: CurrentPage; Renvoyez ceci.currentPage; } public void setCurrentPage (long currentPage) {if (0 == currentPage) {currentPage = 1l; } this.currentPage = currentPage; } public long getEveryPage () {this.everypage = everypage == 0? 10: chaque page; Renvoyez ceci.Everypage; } public void seteverypage (long everypage) {this.everypage = everypage; } public boolean gethasnextpage () {this.hasnextPage = (currentPage! = TotalPage) && (totalPage! = 0); Renvoyez ceci.hasNextPage; } public void sethasnextpage (boolean hasnextpage) {this.hasnextpage = hasnextpage; } public boolean gethasprepage () {this.hasprepage = currentPage! = 1; Renvoyez ceci.haspRepage; } public void sethasprepage (boolean hasprepage) {this.hasprepage = hasprepage; } public long getTotalPage () {return this.totalPage; } public void SettotalPage (Long TotalPage) {if (this.currentPage> TotalPage) {this.currentPage = TotalPage; } this.totalPage = TotalPage; } public long getTotalCount () {return this.totalCount; } public void SettotalCount (long totalCount) {SettotalPage (getTotalPage (totalCount)); this.totalCount = totalCount; } @Override public String toString () {return toStringBuilder.ReflectionToString (this); } / ** * Définissez le statut de tri * * / private void setPagesOrtState (String newPagesOrtName) {// Jugez si le champ de tri précédent est vide if (stringUtils.isempty (sortName)) {// Le tri par défaut est en train d'ordre de ce.sortstate = pageutil.asc; this.sortinfo = pageutil.page_asc; } else {if (stringUtils.equalSignoreCase (newPagesOrtName, sortName)) {// juge la valeur de statut de tri 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 {// Default this.sortState = PageUtil.asc; this.sortinfo = pageutil.page_asc; }} sortName = newPagesOrtName.tolowerCase (); } public boolean issort () {return tri; } public void setsort (Boolean Sort) {this.sort = tri; } public long getEndInIndex () {this.endinIndex = (currentPage) * EveryPage; return endInIndex; } public void setenDinIndex (long endInIndex) {this.endinIndex = endInIndex; }} 2.Pagestate.java
package com.cm.contract.common; import org.apache.commons.lang.stringutils; / ** Classe de statut de pagination * @author Fengwei * @Date 2016-5-23 * / public Enum PageState {/ ** * Définissez le nombre de pièces à afficher par page * * / SetPage, / ** * Page d'accueil * * / premier, / ** * Page précédente * * / Précédent, / ** * Page de retour * * / Next, / ** * Dernière page * * / dernier, / ** * SOR aller * * / gopage; / ** * @Param Value Index Nom * @return Retour Index Index Index Index * / public static int getOrDinal (String Value) {int index = -1; if (stringUtils.isempty (valeur)) {return index; } String newValue = stringUtils.trim (valeur) .toupperase (); try {index = valueof (newValue) .Ordial (); } catch (illégalArgumentException e) {} return index; }} 3.PageUtil.java
/ ** * Classe d'outils de pagination * @author Fengwei * @Date 2016-5-23 * / classe publique PageUtil {public static final String ASC = "ASC"; String final statique publique desc = "desc"; chaîne finale statique publique page_desc = "↓"; String final statique publique Page_ASC = "↑"; Public static final String page_null = ""; public static final string session_page_key = "page"; / ** * Initialiser la classe de pagination * @param initpagesql Query Dewery SQL * @param totalCount Nombre total de lignes * @param index status * @param valeur uniquement lors de la définition du nombre de pièces affichées par page, la valeur ne sera pas nul, les autres sont nuls * / public static page static inintpage (LongCount, index indeger, great la valeur de la chaîne, page de page de page) {page Page = nullante, index indeger, valeur de la chaîne, page de page de page) {Page Page = nullpoulet, indeger indeger, valeur de la chaîne, page de page de page) {Page Page = NullUnd; if (index <0) {page = new page (totalCount); } else {/ ** Combien de pièces sont affichées par page * / long everpage = null == valeur? 10: long.parselong (valeur); / ** Obtenez la classe de pagination en session pour faciliter la sauvegarde de l'état de pagination de la page * / page = sessionpage; Page.SeteVeryPage (Everpage); page.setTotalCount (totalCount); } page de retour; } / ** * Lorsque la page clique sur: page d'accueil, page précédente, page suivante, dernière page, tri et le numéro de page au numéro de page * @param index Paging Status * @param Valeur Tri Nom ou Numéro de page au numéro de page * / PAY STATIC PAGE EXECPAGE (INT INDEX, STRING VALEUR, Page SessionPage) {Page Page = SessionPage; / ** Méthode d'appel pour le calcul de la pagination * / page.pagestate (index, valeur); page de retour; }} 4.DefaultController.java Cette pièce peut être utilisée de manière flexible
package com.cm.contract.common; Importer javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; Importer javax.servlet.http.httpSession; import org.springframework.web.bind.annotation.modeLattrait; / ** * Extraction de la demande publique et de la réponse Titre: DefaultController Description: * * @Author Fengwei * @Date 2016-5-6 3:30:32 PM * / Classe publique DefaultController {/ ** * La phrase de pagination à trois couches d'Oracel effectue une calcul de pagination avant d'afficher les données! * * @param QuerrySQL * L'instruction de requête SQL, non paginée * @param totalCount * le nombre total d'entrées obtenues en fonction de la requête SQL * @param ColumnNameDesCorasc * Nom de la colonne + Méthode de tri: ID DESC ou ASC * / Page Protected Execupage (HttpServletRequest) } / ** État de la page, ce statut est construit sur la page et n'a rien à voir avec les affaires * / string pageAction = request.getParameter ("PageAction"); String value = request.getParameter ("PageKey"); / ** Obtenez l'index pour juger l'état de la page Statut * / int index = pAGEstate.getOrdinal (PageAction); Page Page = NULL; / ** * INDEX <1 Il n'y a que deux états 1 Lorsque le premier appel, il n'y a aucune valeur dans la classe d'état de la page NULL RETOUR -1 2 Lorsque la page définit le nombre de pièces affichées par page: * index = 0, lorsqu'il y a de nombreuses pièces affichées par page, la classe de page doit être recalculée * * / Page SessionPage = GetPage (demande); if (index <1) {page = pageUtil.inIntPage (totalCount, index, valeur, sessionpage); } else {page = pageutil.execpage (index, valeur, sessionpage); } setSession (demande, page); page de retour; } PAGE PRIVÉE GetPage (HttpServLetRequest Request) {page page = (page) request.getSession (). getAttribute (pageUtil.session_page_key); if (page == null) {page = new page (); } page de retour; } private void setSession (httpsservletRequest request, page page) {request.getSession (). setAttribute (pageutil.session_page_key, page); }} Comment utiliser:
5. contrôleur.java
/ ** * Les conditions de pagination ajoutées par modèle * La méthode Execupage est écrite dans la classe d'outils * @param modèle * / @Controller classe publique CMLogController étend defaultController {@RequestMapping ("index.do") public ModelAndView userInto (modèle ModelMap, modèle, string username) {namestr = userName; Model.AddAttribute ("Nom d'utilisateur", NAMESTR); // Nombre de pages long totalCount = logService.PageCounts (modèle); // Page Affichage Page = Execupage (demande, totalCount); if (page.issort ()) {Model.put ("OrderName", page.getsortName ()); Model.put ("descasc", page.getsortState ()); } else {Model.put ("OrderName", "LogTime"); Model.put ("descasc", "desc"); } Model.put ("startIndex", page.getbeginIndex ()); Model.put ("endIndex", page.getEndInIndex ()); ModelAndView mv = new ModelAndView (); // Pagination Query LogList = LogService.PageList (modèle); mv.addObject ("loglist", loglist); mv.setViewName ("/ jsp / log"); retour MV; }} 6. Plusieurs déclarations de requête dans Maybatis
// Query de pagination <select id = "pageList" ParameterType = "map" resultMap = "BaseResultMap"> Sélectionnez TTT. * From (Select tt. *, Rownum rn from (select * from cm_log <Where> <if test = "username! = Null and username! = '' '> <! SQL Injection. # -> et type = # {type, jdbcType = varchar} </ if> </ where> commander par $ {orderName} $ {descasc}) tt) ttt <où> <if test = "startIndex! = Null et startIndex! = ''"> Rn> $ {startIndex} </ if> <if test = " <! [Cdata [et rn <= $ {endindex}]]> </ if> </ where> </ select> // Nombre de pages <select id = "pageCounts" ParameterType = "map" resultType = "Long"> SELECT COUNT (*) FROM CM_LOG <WHORS> <If Test = "username! = Null et UserName! = ''" "> Et username comme username! = Null et Usserame! = '" ""> Et usinge Like Amor. '% $ {nom d'utilisateur}%' </ if> </ where> </lect> 7. Index de page de réception.jsp
// Ajoutez simplement le div dans la mise en page de page // nom d'utilisateur en tant que condition // <jsp: param name = "url" value = "/ log / index.do?" /> La marque de questions sans condition doit exister <body> <div align = "droit" style = "hauteur: 20"> <jsp: inclure page = "/ jsp / page.jsp"> <jsp: param name = "url" value = "/ log / index.do? username = $ {username}" /> </ jsp: include> </div> </odyforde> 8. Page.jsp référencé
<% @ Page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <% @ Taglib Prefix = "C" URI = "http://java.sun.com/jsp/jstl/Core"%> <C: Set var = "Page" Value = "$ {sessonscOpe. <c: set var = "path" value = "$ {pagecontext.request.contextPath}" /> <c: set var = "url" value = "$ {param.url}" /> <c: set var = "urlparams" value = "$ {param.urlparams}" /> <c: set var = "pathurl" Value = "$ {path} / $ {url}" /> <tr> <td colspan = "5"> $ {urlparams} total $ {page.totalcount} test = "$ {page.hasprepage eq false}"> << homepage <prepage </c: when> <c: sinon> <a href = "$ {pathurl} & pageAction = First $ {urlparams}"> << homepage </ A> <a href = "$ {pathurl} & pagection = PREVER $ {urlparams" /> <Page précédente </a> </ c: sinon> </ c: choisir> || <C: Choose> <C: When test = "$ {page.hasnextpage eq false}"> Page suivante> Dernière page >> </ c: quand> <c: sinon> <a href = "$ {pathurl} & pageAction = Next $ {urlparams}"> Page suivante> </a> <a href = "$ {pathurl} & pageAction = last $ {urlparams}"> dernière page >> </a> </c: sinon> </ c: choisis> <sélectionne name = "indexchange" id = "indexchange" onChange = "getCurrentPage (this.value);"> <c: foreach var = "index" begin = "1" end = "$ {page.totalpage}" Step = "1"> <Option Value = "$ {index}" $ {page.CurrentPage Eq Index? "Sélectionné": ""}> $ {index} Page </ Option> </ C: foreach> </ select> Affichage par page: <select name = "evergot" id = "everypage" onChange = "seteverypage (this.value);"> <c: foreach var = "pageCount" begin = "5" end = "$ {page.TotalCount}" STAP = "End =" $ {page.TotalCount " Value = "$ {PageCount}" $ {page.EveryPage EQ PageCount? "Sélectionné": ""}> $ {pageCount} bar </ option> </c: foreach> </ select> </td> </td> </tr> <div style = 'affiche: non'> <a class = lisk id = "indexpagehref" href = '#'> </a> </v> </ script> function getCurrentPage (index) {var a = </v> <script> function getCurrentPage (index) {var A = </v> <script> function getCurrentPage (index) {var A = </v> <script> function getCurrentPage (index) {var A = </v> <script> function GetCurrentPage (index) {VaR A = document.getElementById ("indexPageHref"); a.href = '$ {pathurl} & pageAction = goPage & PageKey =' + index + '$ {urlparams}'; A.SetAttribute ("onClick", ''); a.click ("return false"); } fonction seteVeryPage (everyPage) {var a = document.getElementById ("indexPageHref"); var currentPage = document.getElementById ('indexChange'). valeur; a.href = '$ {pathurl} & pageAction = setPage & PageKey =' + everypage + '$ {urlparams}'; A.SetAttribute ("onClick", ''); a.click ("return false"); } fonction sortpage (sortName) {var a = document.getElementById ("indexPageHref"); a.href = '$ {pathurl} & pageAction = tri & pageKey =' + sortName + '$ {urlparams}'; A.SetAttribute ("onClick", ''); a.click ("return false"); } </ script>Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.