软件编程
位置:首页>> 软件编程>> java编程>> Java分页查询--分页显示(实例讲解)

Java分页查询--分页显示(实例讲解)

作者:jingxian  发布时间:2023-02-05 11:07:15 

标签: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页。

来源:http://www.cnblogs.com/PersistWp/archive/2017/08/14/7360000.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com