阅读(4614) (0)

MyBatis-Plus 插件-分页插件

2022-03-25 14:17:02 更新

PaginationInnerInterceptor

支持的数据库

  • mysql,oracle,db2,h2,hsql,sqlite,postgresql,sqlserver,Phoenix,Gauss ,clickhouse,Sybase,OceanBase,Firebird,cubrid,goldilocks,csiidb
  • 达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库

属性介绍

 属性名  类型  默认值  描述
 overflow  boolean  false  溢出总页数后是否进行处理,默认不处理
 maxLimit  Long    单页分页条数限制,默认无限制
 dbType  DbType    数据库类型,根据类型获取应使用的分页方言
 dialect  IDialect    方言实现类

建议单一数据库类型的均设置 ​dbType

自定义的 mapper#method 使用分页

IPage<UserVo> selectPageVo(IPage<?> page, Integer state);
// or (class MyPage extends Ipage<UserVo>{ private Integer state; })
MyPage selectPageVo(MyPage page);
// or
List<UserVo> selectPageVo(IPage<UserVo> page, Integer state);
<select id="selectPageVo" resultType="xxx.xxx.xxx.UserVo">
    SELECT id,name FROM user WHERE state=#{state}
</select>

  • 如果返回类型是 ​IPage则入参的 ​IPage不能为​null​,因为 返回的​IPage ==​ 入参的​IPage
  • 如果返回类型是 ​List则入参的 ​IPage可以为 ​null(为 ​null则不分页),但需要你手动 入参的​IPage.setRecords​(返回的 ​List​);
  • 如果 ​xml​需要从 ​page里取值,需要 ​page.属性​ 获取

其他:

  • 生成 ​countSql会在 ​left join​ 的表不参与 ​where条件的情况下,把 ​left join​ 优化掉
  • 所以建议任何带有 ​left join​ 的sql,都写标准sql,即给于表一个别名,字段也要 ​别名.字段