java分页工具封装

来源:互联网 发布:linux eclipse 快捷键 编辑:程序博客网 时间:2024/06/06 04:52

分页是每个项目都会用到的,所以它的重要性不言而喻,这里整理一套封装好的分页工具,在项目中直接使用就好。
一、分页分析

首先应该了解分页查询语句(MySQL为例):
select * from table_testLIMIT  -- 分页查询关键字0,     -- 从第几条数据开始查询数据【(当前页数-1)* 每页显示的条数】10;    -- 每页显示的条数
页面显示的分页工具的形式:**当前页 1/10 首页 上一页  每页显示 10  下一页 末页**

看到前面的信息可以总结出需要往后台传递的数据是:当前页,每页显示条数

二、封装工具类

这里的工具类其实首先是一个分页的bean,因为我们要传递的数据不是一个,所以用一个PageBean封装分页属性:
public class PageBean<T>{    private int currentPage = 1; //当前页,默认是第一页    private int pageCount = 10;  //每页显示的条数,默认是10条    private int totalPage;       //总页数    private int totalCount;      //数据总条数    private List<T> pageData;    //查询到的数据对象集合    //省略getter、setter方法    ……    //主要说一下总页数的getter方法    public int getTotalPage(){        //计算公式:总记录数%每页显示条数=0时        if(totalCount % pageCount == 0){            totalPage = totalCount / pageCount;        }else{            //计算公式:总记录数%每页显示条数!=0时            totalPage = totalCount / pageCount + 1;        }        return totalPage;    }}

三、使用分页工具

封装好PageBean之后就可以在项目中直接使用了,在Dao层封装分页查询的方法,传入PageBean就可以了
public void getAll(PageBean<T> pb){    //为PageBean对象的属性赋值    //1、查询总记录数,放入totalCount    int totalCount = this.getTotalCount();    pb.setTotalCount(totalCount);    //2、处理当当前页是第一页和最后一页时的问题    if(pb.getCurrentPage() <= 0){        //如果当前页不大于0,显示第一页        pb.setCurrentPage(1);    }else if(pb.getCurrentPage() > pb.getTotalPage()){        //如果当前页大于最大页数,显示最后一页        pb.setCurrentPage(pb.getTotalPage());    }    //获取当前页,查询数据    int currentPage = pb.getCurrentPage();    //查询的起始行    int index = (currentPage - 1) * pb.getPageCount();    //每页显示的条数    int count = pb.getPageCount();    //查询的sql语句    String sql = "select * from table_test LIMIT ?,?";    try{        //使用dbutil组件        //创建QueryRunner对象        QueryRunner qr = new QueryRunner();        //查询当前页数据        //QueryRunner对象的query方法参数说明:        //第一个:查询的sql        //第二个:查询的返回结果,直接使用接口中声明好的BeanListHandler就行,注意是泛型,具体到业务的时候指定具体的泛型类型        //第三个:这个参数是一个可变参数,就是传入sql语句中占位符的实参        List<T> pageData = qr.query(sql, new BeanListHandler<T>(T.class),index,count);        pb.setPageData(pageData);    }catch(Exception e){        throw new RuntimeException();    }}//查询总记录数的方法public int getTotalCount(){    String sql = "select count(*) from table_test";    try{        //这里使用DbUtils组件,如果有不清楚的可以+QQ:3393055745        //创建QueryRunner对象        QueryRunner qr = new QueryRunner();        //QueryRunner的query方法传入的两个参数:        //第一个:查询sql        //第二个:使用接口封装好的对象就可以,这里使用的对象的意思是返回查询结果的第一条数据        Long count = qr.query(sql,new ScalarHandler<Long>());        return count.intValue();    }catch(Exception e){        throw new RuntimeException();    }}

查询方法封装好之后就是从前台页面传数据了,剩下的就是jsp和后台数据的交互了,就不介绍了。。。

1 0
原创粉丝点击