Есть два общих метода реализации подкура:
1. Измените SQL каждый раз, когда вы поворачиваете страницу, передайте соответствующие параметры SQL, и перейдите в базу данных, чтобы узнать данные страницы в режиме реального времени и отобразить ее.
2. Узнайте все данные в определенной таблице в базе данных, а затем получите и отобразите определенные данные, обрабатывая их в бизнес -логике.
Для простой системы управления с небольшим количеством данных первый метод реализации относительно прост в использовании меньшего количества кода для реализации функции пейджинга. Эта статья также представляет этот метод:
Код фрагмент:
1. Page.java
пакет com.cm.contract.common; импорт org.apache.commons.lang.stringutils; Импорт org.apache.commons.lang.builder.tostringbuilder; / ** Класс страниц*@author fengwei*@date 2016-5-23*/ Public Class Page реализует Java.io.serializable {Private Static Long Long SerialVersionUID = 1L; // предыдущая страница частная логическая Hasprepage; // следующая страница частная логическая HasnextPage; // Сколько элементов отображается на страницу: по умолчанию 20 частная длинная страница = 20 л; // общее количество страниц частной длинной общей страницы; // текущая страница: по умолчанию Page 1 Private Long CurrentPage = 1L; // Start Indescript Private Long BeginIndex; // End Sptript Private Long EndinIndex; // сколько частного длинного общего количества; // Сортировка имени столбца частной строки sortName; // Сортировка статуса частной строки SortState; // Сортировка информации частной строки SortInfo; // Сортировка, сортируется ли личный логический сортинг = false; частная строка 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 () {} / *** Обычно используется, используется для вычисления пейджин** / public Page (Long TotalRecords) {this.TotalCount = totalRecords; CentotalPage (getTotalPage (Total Records)); } / ** * Используйте * при настройке, сколько записей отображается на каждой странице * * / public Page (длинная страница, длинные общие регистрации) {this.everypage = very страница; this.totalcount = totalrecords; CentotalPage (getTotalPage (Total Records)); } / *** @param Code Code* @param value Сколько страниц, чтобы перейти, или установить, сколько элементов отобразить на страницу или сортироваться как имя столбца сортировки* / public void pagestate (int index, string value) {sort = false; Switch (index) {case 0: seteveryPage (long.parselong (value)); Break; Случай 1: First (); Break; Случай 2: предыдущий (); перерыв; Случай 3: Next (); Break; Случай 4: последний (); перерыв; Случай 5: sort = true; sort (value); break; случай 6: // к указанной странице SetCurrentPage (long.parselong (значение)); перерыв; }} / *** Предыдущая страница* / private void First () {currentPage = 1L; } private void предыдущий () {currentPage--; } private void next () {currentPage ++; } private void last () {currentPage = totalPage; } private void sort (string sortName) {// Установите состояние сортировки setPagesortState (sortName); } / *** Рассчитайте общее количество страниц** / private long getTotalPage (Long TotalRecords) {long TotalPage = 0l; каждая страница = каждая страница == NULL? 10L: каждая страница; if (total Records % каждую страницу == 0) TotalPage = TotalRecords / Cally Page; else {totalPage = totalRecords / verypage + 1; } return TotalPage; } public long getBeginIndex () {this.beginIndex = (currentPage - 1) * everypage; вернуть это.beginindex; } public void setBeginIndex (long beginIndex) {this.beginIndex = beginIndex; } public long getCurrentPage () {this.currentPage = currentPage == 0? 1: текущая страница; вернуть это. CurrentPage; } public void setCurrentPage (long CurrentPage) {if (0 == currentPage) {currentPage = 1L; } this.currentPage = currentPage; } public long geteveryPage () {this.everyPage = verypage == 0? 10: каждая страница; вернуть это. } public void seteveryPage (длинная страница) {this.everyPage = everypage; } public boolean gethasnextpage () {this.hasnextpage = (currentPage! = TotalPage) && (totalPage! = 0); вернуть это. HasNextPage; } public void sethasNextPage (boolean hasnextPage) {this.hasnextPage = hasNextPage; } public boolean gethaspRepage () {this.haspRepage = currentPage! = 1; вернуть это. HaspRepage; } public void sethaspRepage (boolean hasprepage) {this.hasprepage = hasprepage; } public long getTotalPage () {return this.totalpage; } public void CetTotOtalPage (Long TotalPage) {if (this.currentPage> totalPage) {this.currentPage = totalPage; } this.TotalPage = totalPage; } public long getTotalCount () {return this.totalcount; } public void cetTotOtalCount (long TotalCount) {CentotalPage (getTotalPage (totalCount)); this.totalcount = totalCount; } @Override public String toString () {return toStringBuilder.ReflectionToString (this); } /*** Установите статус сортировки** /private void setPagesortState (String newPagesortName) {// Судить, является ли предыдущее поле сортировки пустым, если (stringUtils.isempty (sortName)) {// По умолчанию сортировка по умолчанию - это. this.sortinfo = pageutil.page_asc; } else {if (stringUtils.equalsignorecase (newPagesortName, sortName)) {// Судить значение статуса сортировки 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 {// по умолчанию this.sortstate = pageutil.asc; this.sortinfo = pageutil.page_asc; }} sortName = newPagesortName.tolowerCase (); } public boolean issort () {return sort; } public void setSort (boolean sort) {this.sort = sort; } public long getEndinIndex () {this.endinindex = (currentPage) * everypage; вернуть эндиндекс; } public void setEndinIndex (long endinindex) {this.endinindex = endinindex; }} 2.PageState.java
пакет com.cm.contract.common; импорт org.apache.commons.lang.stringutils; /** Класс статуса странификации* @author fengwei* @date 2016-5-23* /public enum pagestate { /*** Установите, сколько произведений для отображения на страницу** /setpage, /*** Home Page** /First, /*** Предыдущая страница** /предыдущая, /** ** Сорт** идти * */ gopage; / *** @param value index name* @return return index индекс индекса индекса индекса*/ public int int getordinal (string value) {int index = -1; if (stringutils.isempty (value)) {return index; } String newValue = stringUtils.trim (value) .touppercase (); try {index = valueof (newValue) .ordinal (); } catch (allogalargumentException e) {} return Index; }} 3. pageutil.java
/ ** * Класс инструмента странификации * @author fengwei * @date 2016-5-23 */ public class pageutil {public Static Final String ASC = "ASC"; публичная статическая конечная строка desc = "desc"; Общественная статическая конечная строка Page_desc = "↓"; публичная статическая конечная строка Page_ASC = "↑"; Общественная статическая конечная строка page_null = ""; Public Static Final String Session_page_key = "page"; / *** Инициализировать класс Paging* @param initpagesql unpatched Query sql* @param totalcount Общее количество строк* @param index saturn* @param value только при настройке, сколько из частей отображается на страницу, значение не будет нулевым, другие - Null*/ public State -intpage (Long TotalCount, inte index, string vitued value value, string vatue vitation). if (index <0) {page = new Page (totalCount); } else { / ** Сколько элементов отображается на страницу* / long everpage = null == Значение? 10: long.parselong (значение); / ** Получите класс пейджинга в сессии, чтобы облегчить сохранение статуса пейджинга*/ page = sessionPage; page.seteverypage (Everypage); page.settotalcount (totalCount); } return Page; } / *** Когда страница нажимает: домашняя страница, предыдущая страница, следующая страница, последняя страница, сортировка и номер страницы к номеру страницы* @param Index Status* @param value sort name или номер страницы к номеру страницы* / public Static Page execpage (int index, string value, page sessionpage) {page = session -page; / ** Метод вызова для расчета под пейджинг*/ page.pagestate (index, value); вернуть страницу; }} 4. DefaultController.java Эта часть может быть гибкой
пакет com.cm.contract.common; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Импорт javax.servlet.http.httpsession; Импорт org.springframework.web.bind.annotation.modelattribute; /** * Извлечение публичного запроса и ответа Название: по умолчанию. * * @param Querysql * Заглавный оператор Query SQL, не лицензированный * @param totalcount * Общее количество записей, полученных на основе запроса sql * @param columnnamedescorasc * Имя столбца + метод сортировки: ID DECS или ASC */ Protected Page executivePage (httpserveltrequest, Long TotalCount) {if (null = alutcount) {if (null = ally) {if (null = alutcount). } / ** Статус страницы, этот статус построен на странице и не имеет ничего общего с бизнесом* / string pageaction = request.getParameter ("pageaction"); String value = request.getParameter ("pageKey"); / ** Получить индекс для оценки статуса страницы*/ int index = pagestate.getordinal (pageaction); Страница страницы = null; / ** * ИНДЕКС <1 Существует только два состояния 1. Когда первый вызов, в классе статуса страницы нет значения. Нормальный возврат -1 2 Когда страница устанавливает, сколько элементов отображается на страницу: * index = 0, когда на странице отображается много элементов, класс страницы должен быть отменен * */ page sessionPage = GetPage (запрос); if (index <1) {page = pageutil.inintpage (totalCount, Index, значение, SessionPage); } else {page = pageutil.execpage (index, value, session -page); } setSession (запрос, page); вернуть страницу; } частная страница getPage (httpservlectrequest) {page page = (page) request.getSession (). getattribute (pageutil.session_page_key); if (page == null) {page = new page (); } return Page; } private void setSession (httpservletrequest, страница страницы) {request.getSession (). setattribute (pageutil.session_page_key, page); }} Как использовать:
5. Controller.java
/ *** Условия подкидки, добавленные по модели* Метод ExecutePage, записывается в классе инструментов* @param model*/ @controller public class cmlogcontroller extends defaultcontroller {@requestmapping ("index.do") public modelAndview userInto (модель Modelmap Model, String usErname) {namest. username; model.addattribute («Имя пользователя», Namest); // количество страниц LONG TOTLCOUNT = logService.PACECOUNTS (MODEL); // Страница Page Display Page = ExecutePage (запрос, 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 ("endidex", page.getendinindex ()); ModelAndView MV = New ModelAndView (); // странный запрос loglist = logservice.pagelist (модель); mv.addobject ("loglist", loglist); mv.setViewName ("/jsp/log"); вернуть MV; }} 6. Несколько заявлений запросов в Maybatis
// Запрос на страницах <select id = "pagelist" parametertype = "map" resultmap = "baseresultmap"> select ttt.* Из (Select tt.*, Rownum rn из (select* from cm_log <где> <if test = "username! = Null и username! О внедрении SQL. Использовать: # -> и type = # {type, jdbctype = varchar} </if> </where> inder by $ {ordername} $ {descasc}) tt) ttt <где> <if test = "startIndex! = null и startIndex! ''> <! [CDATA [и rn <= $ {endIndex}]]>> </if> </where> </select> // Количество страниц <select id = "pagecounts" parametertype = "map" encuettype = "long"> select count (*) от cm_log <where> <if test = "username! '%$ {username}%' </if> </where> </select> 7. Индекс страницы на стойке регистрации.
// Просто добавьте div в макет страницы // имя пользователя в качестве условия // <jsp: param name = "url" value = "/log/index.do? value = "/log/index.do? username = $ {username}"/> </jsp: include> </div> </body> 8. Page.jsp ссылается
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> <cestp var = "value =" $ "$" $ "$" $ "$" $ ". <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} Итого $ {page.totalcount} записывает общее количество $ {page.totalpage} страницы на странице $ $ test="${page.hasPrePage eq false}"> <<Homepage<PrePage</c:when> <c:otherwise> <a href="${pathurl}&pageAction=first${urlParams}"><<Homepage</a> <a href="${pathurl}&pageAction=previous${urlParams}" /> <Предыдущая страница </a> </c: иное> </c: выберите> || <C: выберите> <c: of test = "$ {page.hasnextpage eq false}"> следующая страница> Последняя страница >> </c: of> <c: иное> <a href = "$ {pathurl} & pageaction = next $ {urlparams}"> Следующая страница> </a> <- href = "$ {pathurl} & pageaction = last $ {urlparams}"> последняя страница >> </a> </c: иное> </c: выберите> <select name = "indexchange" id = "indexchange" onchange = "getCurrentPage (this.value); end = "$ {page.totalpage}" step = "1"> <vition value = "$ {index}" $ {page.currentPage EQ Index? «Выбран»: ""}> $ {index} page </option> </c: foreach> </select> отображение на страницу: <select name = "earlipage" id = "ingapage" onchange = "seteverypage (this.value);"> <c: foreach var = "pagecount" begin = "5" end = "$" value = "$ {pagecount}" $ {page.everypage EQ PageCount? «Выбранный»: ""}> $ {pagecount} bar </option> </c: foreach> </select> </td> </td> </tr> <div style = 'display: none'> <a class = listlink id = "indexpagehref" href = '#'> </aze> </div> <script> getCurr document.getElementById ("indexPageHref"); a.href = '$ {pathurl} & pageaction = gopage & pagekey ='+index+'$ {urlparams}'; a.setattribute ("onclick", ''); A.Click («вернуть ложь»); } function seteveryPage (everypage) {var a = document.getElementById ("indexPageHref"); var CurrentPage = document.getElementById ('indexchange'). value; a.href = '$ {pathurl} & pageaction = set -page & pagekey ='+everypage+'$ {urlparams}'; a.setattribute ("onclick", ''); A.Click («вернуть ложь»); } function sortPage (sortName) {var a = document.getElementById ("indexPageHref"); a.href = '$ {pathurl} & pageaction = sort & pagekey ='+sortname+'$ {urlparams}'; a.setattribute ("onclick", ''); A.Click («вернуть ложь»); } </script>Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.