山东大学苏州研究院
mybatis配置使用手册
秦 士 亚 2016-4-6
分页插件
目录
在代码中使用 ................................................................. 2
1). RowBounds方式的调用 ................................................. 2 2). PageHelper.startPage静态方法调用 .................................... 2
例一: ............................................................... 3 例二: ............................................................... 4 例三,使用PageInfo的用法: .......................................... 5
配置方法..................................................................... 6
Spring配置方法 .......................................................... 6 Mybatis配置xml中配置: .................................................. 7 参数说明:................................................................... 8
1. 增加dialect属性, .................................................... 8 2. 增加offsetAsPageNum属性, ............................................ 8 3. 增加rowBoundsWithCount属性, ......................................... 8 4. 增加pageSizeZero属性, ............................................... 8 5. 增加reasonable属性, ................................................. 9 6. params ................................................................ 9 7. supportMethodsArguments ............................................... 9 8. returnPageInfo ........................................................ 9 9. 重要提示: ............................................................ 9 重要提示.................................................................... 10
PageHelper.startPage方法重要提示 ....................................... 10 请不要配置多个分页插件 .................................................. 10 reasonable参数说明 ..................................................... 10 分页插件不支持关联的嵌套结果 ............................................ 11
在代码中使用
//第一种,RowBounds方式的调用
List
//第二种,Mapper接口方式的调用,推荐这种使用方式。 PageHelper.startPage(1, 10);
List
1). RowBounds方式的调用
List
使用这种调用方式时,你可以使用RowBounds参数进行分页,这种方式侵入性最小,我们可以看到,通过RowBounds方式调用只是使用了这个参数,并没有增加其他任何内容。
分页插件检测到使用了RowBounds参数时,就会对该查询进行物理分页。
关于这种方式的调用,有两个特殊的参数是针对RowBounds的,你可以参看上面的场景一和场景二
注:不只有命名空间方式可以用RowBounds,使用接口的时候也可以增加RowBounds参数,例如:
//这种情况下也会进行物理分页查询
List
2). PageHelper.startPage静态方法调用
在你需要进行分页的Mybatis方法前调用PageHelper.startPage静态方法即可,紧跟在这个方法后的第一个Mybatis查询方法会被进行分页。
例一:
SqlSession sqlSession = MybatisHelper.getSqlSession();
CountryMapper countryMapper = sqlSession.getMapper(CountryMapper.class); try {
//获取第1页,10条内容,默认查询总数count PageHelper.startPage(1, 10);
//紧跟着的第一个select方法会被分页
List
//分页时,实际返回的结果list类型是Page
//或者使用PageInfo类(下面的例子有介绍) assertEquals(182, ((Page) list).getTotal()); } finally {
sqlSession.close(); }
例二:
SqlSession sqlSession = MybatisHelper.getSqlSession();
CountryMapper countryMapper = sqlSession.getMapper(CountryMapper.class); try {
//获取第1页,10条内容,默认查询总数count PageHelper.startPage(1, 10);
//紧跟着的第一个select方法会被分页
List
//后面的不会被分页,除非再次调用PageHelper.startPage List
assertEquals(2, list.get(0).getId()); assertEquals(10, list.size());
//分页时,实际返回的结果list类型是Page
//或者使用PageInfo类(下面的例子有介绍) assertEquals(182, ((Page) list).getTotal()); //list2
assertEquals(1, list2.get(0).getId()); assertEquals(182, list2.size()); } finally {
sqlSession.close(); }