如果不分页就走自己的不分页的sql:
返回时包装成PageInfo统一对象为我们做了什么。
返回后page只给我们赋值了记录数。所以需要我们手动把处理后的数据,放在返回pageInfo对象中:
显示调用
new pageInfo的逻辑其实就是:PageInfo因为继承了PageSerializable,所以含有total和list2个属性,给与其赋值。
这样pagehelper的分页就简单梳理完了。
再来聊聊另一个分页插件。
mybats-plus的分页插件
使用
mybats-plus的分页插件的使用先很简单
首先引入其分页插件:
使用mybatis-plus分页插件
在mapper中传入Ipage对象
然后在sql中写我们的分页sql就可以了。
分析
个人觉得mybatis-plus分页很清晰,不是很绕。
这里显示在StatementHandler拼接sql的时候可以做些事情:
对StatementHandler的prepare方法处进行拦截添加业务逻辑
拦截方法: 判断是否需要分页
分页操作:
查询记录数
拼装分页语句获取集合
拼接分页数据
获取总记录数赋值给page对象
最后还是需要我们自己把集合对象赋值给Ipage对象
以上就是mybatis的分页个人理解,并实现了简单的粗糙的自定义分页插件封装,对第三方的分页插件进行浅浅的分析。