使用MybatisPlus分页插件
mybatisPlus官网 https://www.baomidou.com/
- 配置分页插件
- 编写controller方法
(1)需要参数:分页相关的参数(当前页、每页显示记录数)
(2)需要参数:条件参数 - 调用service的方法实现条件分页查询
1. 配置分页插件
官方示例代码:
@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
//H2更换成需要的数据库,比如MYSQL
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
}
编写controller方法,调用service方法实现条件分页查询
/**
* 条件分页查询
* page 当前页
* limit 每页显示的记录数
*/
@ApiOperation("条件分页查询")
@GetMapping("{page}/{limit}")
public Result pageQueryRole(@PathVariable long page, @PathVariable long limit, SysRole sysRoleQueryVo){
//一般来说调用service方法实现,controller层不写业务逻辑代码
//1. 创建page对象,传递分页相关的参数
Page<SysRole> pageParam = new Page<>(page,limit);
//2. 封装条件,判断条件是否为空,不为空进行封装
LambdaQueryWrapper<SysRole> wrapper = new LambdaQueryWrapper<>();
String roleName = sysRoleQueryVo.getRoleName();
if (!StringUtils.isEmpty(roleName)){
wrapper.like(SysRole::getRoleName,roleName); //封装条件查询,like:模糊查询
}
//3. 传入分页需要的参数和查询条件,调用service方法实现分页条件查询
Page<SysRole> result = sysRoleService.page(pageParam, wrapper);
return Result.ok(result);
}
浙公网安备 33010602011771号