配置分页插件
mybatis-plus要实现分页查询,得先向mybatis-plus的插件集合中添加分页插件,mybatis-plus已经提供了成熟的分页插件,我们简单配置下就行,以springboot为例,代码如下
@Configuration
public class MybatisPulsConfig {
/*
* @description: mybatis-plus插件配置 <br>
* @create: 2023/5/11 11:21 <br>
* @param
* @return com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
//分页插件
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
//数据库类型
paginationInnerInterceptor.setDbType(DbType.MYSQL);
//添加到插件列表
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
return mybatisPlusInterceptor;
}
}
分页插件可配置属性如下:
overflow:溢出总页数后是否进行处理(默认不处理)
maxLimit:单页分页条数限制(默认无限制)
dbType:数据库类型(根据类型获取应使用的分页方言),建议单一数据库类型的均设置 dbType
dialect:方言实现类
分页测试
原生的page查询
public Page<SysUser> selectPage(SysUser sysUser) {
Page<SysUser> page = new Page<>();
page.setCurrent(1);
page.setSize(5);
page = lambdaQuery().page(page);
return page;
}
自定义mapper的分页查询
@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {
Page<SysUser> listPage(Page<SysUser> page, SysUser sysUser);
}
如果返回类型是Page则入参的Page不能为null,因为返回的Page==入参的Page; 如果想临时不分页,可以在初始化Page时size参数传 <0 的值;如果返回类型是 List 则入参的 Page可以为 null(为 null 则不分页)。Page对象是IPage的实现类,是mybatis-plus提供的一个分页对象,如果有个性化需求,可自定义实现了IPage接口的分页对象。
注意:分页时生成 countSql 会在 left join
的表不参与 where
条件的情况下,把 left join
优化掉,所以建议任何带有 left join
的sql,都写标准sql,即给于表一个别名,字段也要:别名.字段。
Page对象属性如下:
属性名 | 类型 | 默认值 | 描述 |
---|---|---|---|
records | List | emptyList | 查询数据列表 |
total | Long | 0 | 查询列表总记录数 |
size | Long | 10 | 每页显示条数,默认 10 |
current | Long | 1 | 当前页 |
orders | List | emptyList | 排序字段信息,允许前端传入的时候,注意 SQL 注入问题,可以使用 SqlInjectionUtils.check(...) 检查文本 |
optimizeCountSql | boolean | true | 自动优化 COUNT SQL 如果遇到 jSqlParser 无法解析情况,设置该参数为 false |
optimizeJoinOfCountSql | boolean | true | 自动优化 COUNT SQL 是否把 join 查询部分移除 |
searchCount | boolean | true | 是否进行 count 查询,如果指向查询到列表不要查询总记录数,设置该参数为 false |
maxLimit | Long | 单页分页条数限制 | |
countId | String | xml 自定义 count 查询的 statementId |