感谢大家的支持,通过收集建议,对分页插件做了多项改进。现在正式发布3.0版本。 v3.0现在支持两种形式的分页,使用PageHelper.startPage方法或者使用RowBounds参数
PageHelper.startPage方法修改,原先的startPage(int pageNum, int pageSize)默认求count,新增的startPage(int pageNum, int pageSize, boolean count)设置count=false可以不执行count查询
移除endPage方法,现在本地变量localPage改为取出后清空本地变量。 修改Page<E>类,继承ArrayList<E> 关于两种形式的调用,请看示例代码
使用方法在Mybatis的配置xml中配置拦截器插件: 2 | < plugin interceptor = "PageHelper" ></ plugin > |
这里的PageHelper要使用完整的类路径,需要加上包路径。 不支持的情况对于关联结果查询,使用分页得不到正常的结果,因为只有把数据全部查询出来,才能得到最终的结果,对这个结果进行分页才有效。因而如果是这种情况,必然要先全部查询,在对结果处理,这样就体现不出分页的作用了。 对于关联嵌套查询,使用分页的时候,只会对主SQL进行分页查询,嵌套的查询不会被分页。 关联结果查询和关联嵌套查询的区别关联结果查询是查询出多个字段的数据,然后将字段拼接到相应的对象中,只会执行一次查询。 关联嵌套查询是对每个嵌套的查询单独执行sql,会执行多次查询。 这里贴一段示例代码中的片段: 02 | public void testPageHelperByNamespaceAndRowBounds() throws Exception { |
04 | List<SysLoginLog> logs = sqlSession.selectList( "findSysLoginLog2" ); |
05 | Assert.assertNotEquals( 10 , logs.size()); |
08 | List<SysLoginLog> logs2 = sqlSession |
09 | .selectList( "findSysLoginLog2" , null , new RowBounds( 0 , 10 )); |
10 | Assert.assertEquals( 10 , logs2.size()); |
这里使用了新的分页方式,使用RowBounds进行分页,更多详细内容,大家可以去项目主页查看示例。 如果你对本插件有什么意见或建议,欢迎留言,不需要保留,大胆的说出来吧! |