1.引入分页插件
1.引入Jar包
如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的jar即可下载)
由于使用了sql解析工具,你还需要下载jsqlparser.jar(这个文件完全独立,不依赖其他):
2. 在Mybatis配置xml中配置拦截器插件:
3. 在Mybatis配置xml中配置拦截器插件:
如何在代码中使用
首先该分页插件支持以下两种调用方式:
//第一种,RowBounds方式的调用
List<XXX> list = sqlSession.selectList("<-- xxx.xml当中的配置id -->", null, new RowBounds(1, 10));
//第二种,Mapper接口方式的调用,推荐这种使用方式。
//小弟深深感受到了面向接口编程神奇之处。各位大大见笑了。
PageHelper.startPage(1, 10);List<Country> list = countryMapper.selectIf(1);
为何要用此插件?
mybatis提供的分页效率低。
Select * from user limit #{p1},#{p2}传统的分页有何不足之处?
Select * from user limit #{p1},#{p2} mybatis内部在看到jdbc的Resultset对象时,用游标定位offset的位置,只处理limit条记录。
场景:当数据库105万条数据,1万1页,我要查第一百页,那就是第1000001到条1010000条,使用这种分页查询,先是查询全部105万条,然后截取所对应页码的记录,效率不行。
主要工作原理是什么?
这个我大体上知道那么回事,真正让我追本溯源现在还没有那个实力。
主要思想:拦截handleResultSets方法来获取最后的处理结果。
如果要在Spring里面集成这个分页插件,请浏览原文。
欢迎指正,欢迎交流