分页查询之 PageBean 的优化

/**

本博客由马瘦风整理并发布,创作不易,转载请注明出处:

 
 

http://blog.csdn.net/ma_shou_feng

*/

1. JavaBean概述:

JavaBean 是Java 中类的一种,意为Java语言描述的可重用组件。凡是描述一类事物、提供空参构造方法、并为其属性提供setter、getter 方法后的 Java 类都是 JavaBean,包括对class 字节码文件的抽象表述 Class 类也算。

2. PageBean的设计优化:

PageBean的使用,必须要有当前页、页大小以及总记录数,如此才能确定一个 PageBean 的所有内容。因此将构造方法强制为满参方法,或包含三个必要参数:

//页面对象最基本的三个要素
public PageBean(intcurrentPage, int pageSize, int totalRecords) {
    super();
    this.currentPage =currentPage;
    this.pageSize =pageSize;
    this.totalRecords =totalRecords;
}

注意:不提供空参构造方法,是为了防止其他成员变量的赋值方法没有来得及调用,从而导致分页显示出现问题。

减少部分 set方法,在 setDatas 设置页面信息时即调用 这些减少的 set方法,将页面的其他属性提前设置好:

//在此方法中封装其他相关数据
public void setDatas(List<T>datas) {
    this.datas =datas;
    this.setTotalPages();
    this.setPreviousPage();
    this.setNextPage();
}

3. 具体设计代码如下:

/** 
 * 通用的分页Bean 
 * @author healchow 
 * @param <T> 
 */  
public class PageBean<T> implements java.io.Serializable{  
    //设置成泛型,就可以让PageBean存储任何类型的数据了  
    private List<T> datas;            //当前页面的数据  
    private int firstPage = 1;        //首页,默认为1  
    private int previousPage;        //上一页  
    private int nextPage;            //下一页  
    private int totalPages;            //末页、总页数  
    private int currentPage;        //当前页  
    private int totalRecords;        //总记录条数  
    private int pageSize = 5;        //每页显示的记录数,默认为5,后期可修改  
    public PageBean() {  
        super();  
    }  
    //页面对象最基本的三个要素  
    public PageBean(int currentPage, int pageSize, int totalRecords) {  
        super();  
        this.currentPage = currentPage;  
        this.pageSize = pageSize;  
        this.totalRecords = totalRecords;  
    }  
    public List<T> getDatas() {  
        return datas;  
    }  
    //在此方法中封装其他相关数据  
    public void setDatas(List<T> datas) {  
        this.datas = datas;  
        this.setTotalPages();  
        this.setPreviousPage();  
        this.setNextPage();  
    }  
    public int getFirstPage() {  
        return firstPage;  
    }  
    public void setFirstPage(int firstPage) {  
        this.firstPage = firstPage;  
    }  
    public int getPreviousPage() {  
        return previousPage;  
    }  
    public void setPreviousPage() {  
        //当前页如果大于1,则前一页为当前页-1,否则前一页仍为1  
        if(this.getCurrentPage() > 1)  
            this.previousPage = this.getCurrentPage() - 1;  
        else {  
            this.previousPage = 1;  
        }  
    }  
    public int getNextPage() {  
        return nextPage;  
    }  
    public void setNextPage() {  
        //如果当前页不是最后一页,则当前页+1,否则返回末页  
        if(this.currentPage < totalPages) {  
            this.nextPage = currentPage + 1;  
        }else {  
            this.nextPage = totalPages;  
        }  
    }  
    public int getTotalPages() {  
        return totalPages;  
    }  
    public void setTotalPages() {  
        this.totalPages = (int) Math.ceil((double)this.getTotalRecords() / this.getPageSize());  
    }  
    public int getCurrentPage() {  
        return currentPage;  
    }  
    public void setCurrentPage(int currentPage) {  
        this.currentPage = currentPage;  
    }  
    public int getTotalRecords() {  
        return totalRecords;  
    }  
    public void setTotalRecords(int totalRecords) {  
        this.totalRecords = totalRecords;  
    }  
    public int getPageSize() {  
        return pageSize;  
    }  
    public void setPageSize(int pageSize) {  
        this.pageSize = pageSize;  
    }  
    @Override  
    public String toString() {  
        return "PageBean-本页数据:" + datas + ", 首页:" + firstPage + ",上一页:" + previousPage  
            + ",下一页:" + nextPage + ",共" + totalPages + "页,当前第" + currentPage   
            + "页,共" + totalRecords + "条,每页" + pageSize + "条";  
    }  
}

猜你喜欢

转载自blog.csdn.net/ma_shou_feng/article/details/78786472