Java分页查询--分页显示(实例讲解)
投稿:jingxian
下面小编就为大家带来一篇Java分页查询--分页显示(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
当数据库中数据条数过多时,一个页面就不能显示,这是要设置分页查询,首先要使用的是数据库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页。
以上这篇Java分页查询--分页显示(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。