分页功能之PageBean

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24831411/article/details/78181791

一 JavaWeb实现分页的PageBean的属性介绍

  1. int total;总记录数,这个需要从数据库中查询得到
  2. int pageSize;每页显示的记录数,一般是设定好的具体数值
  3. int pageNumber;当前页码,从前端获取
  4. nt totalPage;总页数,计算得到;有许多方法,介绍其中一种:totalPage = total % pageSize == 0 ? total / pageSize:total / pageSize + 1
  5. int startIndex;起始索引,计算得到:(pageNumber-1)*pageSize;
    SqlServer:top关键字
    Oracle:rownumber+嵌套子查询
    MySQL :limit关键字,在此使用的MySQL的limit实现分页
    这个是用来控制物理分页中SQL分页语句的。例如MySQL的limit关键字 的语法就有limit ?,?。
    在此需要介绍一下limit关键字实现分页:MySQL的方言limit可以帮助我们实现物理分页(也就是在数据库端的分页),而limit的参数有两种情况:
    • 一个参数的情况:表示查询前多少条记录
    • 两个参数的情况:用于分页,第一页起始从索引0开始,第二页的起始索引为(当前页码-1)*每页显示的条数。
    • -
  6. List list;查询到的数据集合

二 PageBean的抽取过程

1.首先,Servlet从jsp获取当前页码,然后传递给Service也就是业务逻辑层。

2.service层接收到数据,并且设置pageSize大小;

3.然后调用dao层查询数据库中的总的记录条数total和查询到的分页后的数据List<Prodcut>返回给service层。

4.service层就有了以下数据:total,pageSize,pageNumber,List<Product>

5.通过计算可以得到totalPage和startIndex;

6.问题来了:当我们考虑如何将总页数,查询到的结果List集合一块返回给Servlet呢?一个方法无法返回两个不同类型的数据。

7.于是我们可以将以上的数据封装到PageBean中,通过PageBean这个JavaBean封装以上的数据,存取的时候只要操作这一个对象就行。

三.话不多说上代码

为了实现PageBean的通用性,将List的泛型就用T,在具体场景下再具体指定其泛型的类型。
public class PageBean<T> {
    private int total;
    private int totalPage;
    private int pageNumber;
    private int pageSize;
    private int startIndex;
    private List<T> products;

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getTotalPage() {
        return totalPage = this.total % this.pageSize == 0 ? 
                (this.total / this.pageSize) : (this.total/this.pageSize+1);
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getPageNumber() {
        return pageNumber;
    }

    public void setPageNumber(int pageNumber) {
        this.pageNumber = pageNumber;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getStartIndex() {
        return startIndex = this.pageSize * (this.pageNumber - 1);
    }

    public void setStartIndex(int startIndex) {
        this.startIndex = startIndex;
    }

    public List<T> getProducts() {
        return products;
    }

    public void setProducts(List<T> products) {
        this.products = products;
    }

    public PageBean() {
    }

}

猜你喜欢

转载自blog.csdn.net/qq_24831411/article/details/78181791