为什么mybatisplus的拦截器可以实现分页效果?
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
在实现分页处理的时候,通常mybatisplus需要加上一个分页拦截器(PaginationInterceptor),通过拦截器可以实现将所有的sql请求拦截并做处理
对于一些非mysql数据库, 它存在分页字段语法不相同的情况, 使用分页拦击器可以同一管理不同种类数据源的分页操作
使用分页插件的时候, 使用Mybatis提供的IPage配合拦截器实现分页效果
@Override
public ResponseResult findList(WmMaterialDto dto) {
IPage page = new Page(dto.getPage(),dto.getSize());
LambdaQueryWrapper<WmMaterial> lambdaQueryWrapper = new LambdaQueryWrapper<>();
if (dto.getIsCollection() != null&&dto.getIsCollection() == 1){
lambdaQueryWrapper.eq(WmMaterial::getIsCollection,dto.getIsCollection());
}
lambdaQueryWrapper.eq(WmMaterial::getUserId,WmThreadLocalUtil.getUser().getId());
lambdaQueryWrapper.orderByDesc(WmMaterial::getCreatedTime);
page = page(page,lambdaQueryWrapper);
responseResult.setData(page.getRecords());
return responseResult;
}