分页-应用第三方实现mybatis拦截器PageHelper

在对象声明后面的第一条的查询的sql语句进行拦截,
拦截后实现对应方言的查询的分页语句。如果还要返回记录总数。(这里可以理解执行了两条sql语句。)
还要执行一条的sql语句。总数sql结果封装pageInfo.total(这里总数 pageInfo是辅助类)。
记录封装pageInfo.rows。在把pageInfo对象封装到PageHelper对象中。(内部将执行sql 封装到一个对象,在进行封装到另一个对象)


我们何时进行声明呢。
startPage(静态方法 不用new这个对象即可直接调用这个方法)一旦声明,拦截的监听生效,后面第一个查询SQL。

只对后面的第一SQL进行分页,后面再有查询就不生效。只对这条sql语句声明开启的起作用,其他的不会。

源代码:

 /**
     * 开始分页
     *
     * @param pageNum  页码
     * @param pageSize 每页显示数量
     */
    public static void startPage(int pageNum, int pageSize) {
        startPage(pageNum, pageSize, true);
    }

    

项目中代码:

public EasyUIResult queryList(Integer page, Integer rows){
PageHelper.startPage(page, rows); //开启拦截器侦听
//被PageHelper拦截,已经分页数据
List itemList = itemMapper.queryList();
PageInfo pageInfo =  new PageInfo(itemList);

return new EasyUIResult(pageInfo.getTotal(), pageInfo.getList());
}


两部分结合 产生分页的效果。
ajax提交,提交参数是两个。1.当前页 page + 2. 每页记录数 rows
我们只需扩展这两个属性即可。
通用mapper能自动帮我解决分页吗?不能,因为多了排序,要按照修改的时间倒序
总数和一页数据
我们需要PageHelper分页拦截器对象来实现分页。

你可能感兴趣的:(mybatis)