当数据库中数据条数过多时,一个页面就不能显示,这是要设置分页查询,首先要使用的是数据库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