欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-22 18:14:18
当数据库中数据条数过多时,一个页面就不能显示,这是要设置分页查询,首先要使用的是数据库sql语句的limit条件实现分组查询 sql语句大概形式为: select *...

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