Java分頁查詢--分頁顯示(實例講解)
當數(shù)據(jù)庫中數(shù)據(jù)條數(shù)過多時,一個頁面就不能顯示,這是要設(shè)置分頁查詢,首先要使用的是數(shù)據(jù)庫sql語句的limit條件實現(xiàn)分組查詢
sql語句大概形式為:
select * from table limit 開始索引,顯示條數(shù)
用該語句就會實現(xiàn)分塊查詢,并且每頁顯示固定條數(shù)。
首先要實現(xiàn)后臺分頁,我們需要知道它有多少頁,每頁有多少行,這就需要知道一共多少行,調(diào)用sql語句時還需要知道每一頁的開始索引,開始索引是根據(jù)當前頁數(shù)算出來的,所以還需要知道當前頁數(shù),查詢后會返回一個列表存儲當前頁數(shù)據(jù)。將這些屬性及獲取設(shè)置的方法封裝成一個類就有了下面的page類:
Page類
public class Page<T> { private List<T> data;//數(shù)據(jù)列表 private int pagenum;//當前頁數(shù) private int pagesize;//當前頁顯示條數(shù) private int rows;//總行數(shù) public Page(int rows,int pagenum, int pagesize) { super(); data=new ArrayList<>(); this.rows=rows; this.setPagesize(pagesize); this.setPagenum(pagenum); } public Page() { super(); } public int getPagenum() { return pagenum; } public void setPagenum(int pagenum) { if(pagenum>getTotalpage()) { this.pagenum=getTotalpage(); } else { this.pagenum = pagenum; } if(pagenum<1) { this.pagenum=1; } } public int getPagesize() { return pagesize; } public void setPagesize(int pagesize) { this.pagesize = pagesize; } public int getTotalpage() { //計算總頁數(shù) if(rows%pagesize==0) { return rows/pagesize; } else { return rows/pagesize+1; } } public int getRows() { return rows; } public void setRows(int rows) { this.rows = rows; } public int getIndexnum() { //獲取索引值 return pagesize*(pagenum-1); } public List<T> getData() { return data; } public void setData(List<T> data) { this.data = data; } }
初始化時我們只需要獲得數(shù)據(jù)總條數(shù),頁數(shù)及每頁顯示條數(shù)。數(shù)據(jù)總條數(shù)可以用sql語句select count(*)from table 獲得。每次查詢時只需要傳入當前頁數(shù)就可以了。將每次查詢后的page對象傳入jsp前臺頁面,并以一個div來顯示
顯示div
<div> <a href="/stuent8.11/stuServlet?pagenum=1" rel="external nofollow" >首頁</a> <a href="/stuent8.11/stuServlet?pagenum=${apage.pagenum-1 }" rel="external nofollow" >上一頁</a> <c:choose> <c:when test="${apage.totalpage<=5 }"> <c:set var="begin" value="1"></c:set> <c:set var="end" value="${apage.totalpage }"></c:set> </c:when> <c:when test="${apage.totalpage>5 }"> <c:set var="begin" value="1"></c:set> <c:set var="end" value="5"></c:set> <c:if test="${apage.pagenum>3 }"> <c:set var="begin" value="${apage.pagenum-2 }"></c:set> <c:set var="end" value="${apage.pagenum+2 }"></c:set> </c:if> <c:if test="${end>apage.totalpage }"> <c:set var="begin" value="${apage.totalpage-4 }"></c:set> <c:set var="end" value="${apage.totalpage }"></c:set> </c:if> </c:when> </c:choose> <c:forEach begin="${begin }" end="${end }" step="1" var="num"> <c:if test="${apage.pagenum==num }"> [${num }] </c:if> <c:if test="${apage.pagenum!=num }"> <a href="/stuent8.11/stuServlet?pagenum=${num }" rel="external nofollow" >${num }</a> </c:if> </c:forEach> <a href="/stuent8.11/stuServlet?pagenum=${apage.pagenum+1 }" rel="external nofollow" >下一頁</a> <a href="/stuent8.11/stuServlet?pagenum=${apage.totalpage }" rel="external nofollow" >末頁</a> </div>
其中的一個choose是用于規(guī)定頁面顯示的最大頁數(shù),這里是5頁,就是說當點到第4頁是時,第1頁就會消失,出現(xiàn)第6頁。
以上這篇Java分頁查詢--分頁顯示(實例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Web項目spring配置文件隨服務(wù)器啟動時自動加載
這篇文章主要介紹了Spring Web項目spring配置文件隨服務(wù)器啟動時自動加載,加載spring的配置文件,并且只加載一次,從而提高程序效率。具體內(nèi)容詳情大家通過本文一起學(xué)習(xí)吧2018-01-01mybatis-plus-boot-starter包與mybatis-plus-generator的沖突解決
本文主要介紹了mybatis-plus-boot-starter包與mybatis-plus-generator的沖突解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10java中線程的sleep()方法和yield()方法的區(qū)別
本文主要介紹了java中線程的sleep()方法和yield()方法的區(qū)別,Thread類的sleep()方法使線程休眠指定時間,不釋放鎖,而yield()提示調(diào)度器當前線程愿意讓出CPU資源,不保證立即切換線程,感興趣的可以了解一下2024-10-10