ПРИМЕЧАНИЕ. Я видел множество онлайн -пейджинг, многие из которых утверждают, что это общие, но часто они не являются удовлетворительными: некоторые добавляют информацию о адресах URL в класс пейджинга, а некоторые также выполняют действия под пейджингом в классе Paging (это действие является полностью вопросом для работы с базой данных). Теперь, после моего резюме и уточнения:
Независимо от того, будьте ли вы вручную сами или используете помощь в рамках. Этот класс инструментов может помочь вам достичь стабильных эффектов подключения (включая функцию нумерации страниц навигации), а метод использования относительно прост: ОК, меньше бессмысленности, код заключается в следующем:
Пакет Test.dao; импортировать java.util.list; / *** Класс инструментов для страниц* @author Не принимайте имя сети*/ public class pager <t> {private list <t> list; // Запись объекта набор результатов Private int total = 0; // общие записи частные int limit = 20; // количество записей, отображаемых на страницу Private Int Pages = 1; // Общее количество страниц частного PageNumber = 1; // текущая страница частная логическая логина isfirstpage = false; // будь то первая страница Private Boolean IslastPage = false; // будь то последняя страница частной логической логины haspreviouspage = false; // Есть ли предыдущая страница частная логическая логическая hasnextpage = false; // Есть ли следующая страница частная навигационная навигация = 8; // количество номеров страниц навигации частные int [] navigationpagenumbers; // все номера страниц навигации Public Pager (int total, int pageNumber, Limit); } public Pager (int total, int pageNumber, int limit) {init (total, pageNumber, limit); } private void init (int total, int pageNumber, int limit) {init (total, pageNumber, limit); } private void init (int total, int pageNumber, int limit) {// Установить основные параметры this.total = total; this.limit = limit; this.pages = (this.total-1)/this.limit+1; // первоначально правильно в соответствии с текущим номером, который может быть неверным, если (pageNumber <1) {this.pageNumber = 1; } else if (pageNumber> this.pages) {this.pageNumber = this.pages; } else {this.pageNumber = pageNumber; } // После базового параметра параметров вычислить страницу навигации CalcnavigatePageNumbers (); //, а также определение границы страницы судья udgepageboudary (); } /*** Рассчитайте страницу навигации* /private void calcnavigatepagenumbers () {// Когда общее количество страниц меньше или равно числу страниц навигации, если (страницы <= vavigatepages) {navigatepagenmers = new int [pages]; for (int i = 0; i <страниц; i ++) {vavigatepagenumbers [i] = i+1; }} else {// Когда общее количество страниц больше, чем количество навигационных страниц navigatepageNumbers = new int [navigatePages]; int startnum = pagenumber-navigatepages/2; int endnum = pageNumber+vaigtpages/2; if (startnum <1) {startNum = 1; // (Первая страница навигационных страниц для (int i = 0; i <navigatepages; i ++) {navigatepagenumbers [i] = startnum ++;}} else if (endnum> pages) {endnum = pages; // Последняя страница NavigatePages для (int i = NavigatePages-1; i> = 0; } else {// Все промежуточные страницы для (int i = 0; i <navigatepages; i ++) {navigatepagenumbers [i] = startnum ++; PageNumber! = 1; */ public int getTotal () {return total; getPageNumber () {return pageNumber; haspreviouspage () {return haspreviouspage; .Append (", PageNumber ="). Append (PageNumber) .append (", Limit ="). Append (Limit). Append (", isfirstPage ="). Приложение (ISFirstPage) .Append (", IslastPage ="). Append (islastPage) .Append (haspReviousPage = "). .Append (", HasNextPage ="). Append (HasnextPage). "+navigatepagenumbers [i]);} sb.append (", list.size = "+list.size ()); sb.append ("] "); return sb.toString ();}} Об использовании: шаги следующие:
1). Независимо от того, используется ли условный запрос, сначала подсчитайте соответствующее общее количество записей.
2). Построить класс пейджера (ограниченные параметры могут быть сделаны в соответствии с их собственным передним планом)
3). Получите параметр PageNumber, который был автоматически исправлен в соответствии с построенным классом Pager, умножьте -1 и ограничивает, чтобы служить местоположением первой записи, которая будет запрошена.
4). Установите все записи для проверки из исходной позиции до предела. (Если вы вручную поднимаются, также возможно, что второй параметр является смещением позиции конечной записи, в зависимости от базы данных)
5). Установите список, запрошенный [условием] в объект пейджера и верните.
6). На уровне презентации вы можете использовать этот объект страницы через сервлет или действие или напрямую получить объект пейджера. Конкретный вопрос сплайсинга URL также должен быть оставлен на презентационном уровне для завершения.
int totalCount = integer.valueof (QueryCount.UniquerSult (). ToString ()); Pager Pager = New Pager (TotalCount, PageNumber, Limit); QueryList.SetFirStresult ((Pager.getPageNumber ()-1)*Limit); // Ошибочная обработка QueryList.setMaxResults (Limit); pager.setlist (querylist.list ()); вернуть пейджер;
Приведенный выше код является простым примером с использованием Hibernate. Если вы используете ручные страницы, выполните шаги для использования.
Конечно, страдание может быть завершено в слое DAO или в сервисном слое. Сервлет или действие вызывает код уровня сервиса. Лично, я думаю: пейджинг на самом деле является бизнес -потребностью, поэтому его можно помещать на бизнес. Поскольку слой DAO предоставляет соответствующий список [Запрос условий] и количество статистических данных [условия], бизнес -уровень может делать вызовы методов в соответствии с его собственными потребностями (за ним нужно только следовать установленным шагам. Конечно, много раз, бизнес установил шаги процесса).
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.