首页 > 开发 > Java > 正文

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

2024-07-13 10:10:58
字体:
来源:转载
供稿:网友

当数据库中数据条数过多时,一个页面就不能显示,这是要设置分页查询,首先要使用的是数据库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分页查询--分页显示(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表