當數據庫中數據條數過多時,一個頁面就不能顯示,這是要設置分頁查詢,首先要使用的是數據庫sql語句的limit條件實現分組查詢
sql語句大概形式為:
select * from table limit 開始索引,顯示條數
用該語句就會實現分塊查詢,并且每頁顯示固定條數。
首先要實現后臺分頁,我們需要知道它有多少頁,每頁有多少行,這就需要知道一共多少行,調用sql語句時還需要知道每一頁的開始索引,開始索引是根據當前頁數算出來的,所以還需要知道當前頁數,查詢后會返回一個列表存儲當前頁數據。將這些屬性及獲取設置的方法封裝成一個類就有了下面的page類:
Page類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
public class Page< T > { private List< T > data;//數據列表 private int pagenum;//當前頁數 private int pagesize;//當前頁顯示條數 private int rows;//總行數 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() { //計算總頁數 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; } } |
初始化時我們只需要獲得數據總條數,頁數及每頁顯示條數。數據總條數可以用sql語句select count(*)from table 獲得。每次查詢時只需要傳入當前頁數就可以了。將每次查詢后的page對象傳入jsp前臺頁面,并以一個div來顯示
顯示div
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
< 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是用于規定頁面顯示的最大頁數,這里是5頁,就是說當點到第4頁是時,第1頁就會消失,出現第6頁。
以上這篇Java分頁查詢--分頁顯示(實例講解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/PersistWp/archive/2017/08/14/7360000.html