Java分页查询--分页显示(实例讲解)
作者:jingxian 时间:2023-02-05 11:07:15
当数据库中数据条数过多时,一个页面就不能显示,这是要设置分页查询,首先要使用的是数据库sql语句的limit条件实现分组查询
sql语句大概形式为:
select * from table limit 开始索引,显示条数
用该语句就会实现分块查询,并且每页显示固定条数。
首先要实现后台分页,我们需要知道它有多少页,每页有多少行,这就需要知道一共多少行,调用sql语句时还需要知道每一页的开始索引,开始索引是根据当前页数算出来的,所以还需要知道当前页数,查询后会返回一个列表存储当前页数据。将这些属性及获取设置的方法封装成一个类就有了下面的page类:
Page类
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
<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页。
来源:http://www.cnblogs.com/PersistWp/archive/2017/08/14/7360000.html
标签:java,分页查询,分页显示
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java集合TreeSet用法详解
2023-11-10 22:53:34
![](https://img.aspxhome.com/file/2023/4/59354_0s.jpg)
AQS同步组件Semaphore信号量案例剖析
2023-11-27 14:27:04
![](https://img.aspxhome.com/file/2023/3/60483_0s.png)
解决Mybatis中foreach嵌套使用if标签对象取值的问题
2023-11-23 06:02:02
Java探索之Thread+IO文件的加密解密代码实例
2023-01-26 19:07:03
Java实现简单的万年历
2023-11-29 08:31:24
![](https://img.aspxhome.com/file/2023/1/60691_0s.jpg)
springboot使用之多个filter的执行顺序以及配置方式
2023-11-09 09:30:59
![](https://img.aspxhome.com/file/2023/5/59045_0s.jpg)
Java中比较运算符compareTo()、equals()与==的区别及应用总结
2023-11-28 20:08:28
![](https://img.aspxhome.com/file/2023/1/60801_0s.jpg)
SpringBoot实现Excel文件批量上传导入数据库
2023-11-29 11:13:44
![](https://img.aspxhome.com/file/2023/1/60571_0s.jpg)
IntelliJ IDEA 下载安装超详细教程(推荐)
2023-11-19 23:50:16
![](https://img.aspxhome.com/file/2023/6/59086_0s.png)
MyBatis-Plus实现分页的方法使用详解
2023-02-14 18:22:16
![](https://img.aspxhome.com/file/2023/6/60026_0s.png)
Android 显示GIF图片实例详解
2023-08-06 09:11:52
![](https://img.aspxhome.com/file/2023/8/86758_0s.jpg)
Java编程中使用XFire框架调用WebService程序接口
2023-11-06 20:16:33
![](https://img.aspxhome.com/file/2023/0/58990_0s.png)
SpringBoot整合RedisTemplate实现缓存信息监控的步骤
2023-10-14 10:17:13
Java生成随机姓名、性别和年龄的实现示例
2023-11-13 16:43:26
![](https://img.aspxhome.com/file/2023/7/59257_0s.png)
Java实现简单QQ聊天工具
2023-11-25 05:54:52
![](https://img.aspxhome.com/file/2023/0/60130_0s.jpg)
MyBatis-Plus多表联查(动态查询)的项目实践
2023-11-19 21:43:17
![](https://img.aspxhome.com/file/2023/3/59663_0s.png)
Java 实现常见的非对称加密算法
2023-11-27 18:51:03
Java代码实现简单酒店管理系统
2023-11-21 03:38:57
![](https://img.aspxhome.com/file/2023/9/59539_0s.jpg)
JavaEE开发之SpringMVC中的自定义消息转换器与文件上传
2023-11-24 19:36:02
![](https://img.aspxhome.com/file/2023/4/59504_0s.jpg)
JAVA 中Spring的@Async用法总结
2023-11-28 16:35:58