Mybatis-Plus 分页无效,失效,返回全部的问题解决记录
笔者在最近的开发中,拿到了公司一个二手项目的整改,看了原项目是使用了Mybatis-Plus的,那么我也就默认这个项目的配置是齐全的,但是我新加了一些功能,导致分页没有效果,这让我百思不得其解,先贴上代码:
public Page<SysLogLoginDTO> pageLoginLog(PageLoginDto pageLoginDto) {
LambdaQueryWrapper<SysLogLoginEntity> wrappers = Wrappers.lambdaQuery(SysLogLoginEntity.class)
.eq(Objects.nonNull(pageLoginDto.getStatus()),SysLogLoginEntity::getStatus,pageLoginDto.getStatus())
.like(StrUtil.isNotBlank(pageLoginDto.getCreatorName()),SysLogLoginEntity::getCreatorName,pageLoginDto.getCreatorName())
.apply(StrUtil.isNotBlank(pageLoginDto.getOrderField()),
"order by {0} {1}",
pageLoginDto.getOrderField(),
StrUtil.isBlank(pageLoginDto.getOrder()) ? "asc" : pageLoginDto.getOrder()
);
Page<SysLogLoginEntity> paramPage = new Page<>(pageLoginDto.getPageNo(), pageLoginDto.getPageSize());
Page<SysLogLoginEntity> resPage = this.page(paramPage, wrappers);
IPage<SysLogLoginDTO> convertedPage = resPage.convert(source -> BeanUtil.copyProperties(source, SysLogLoginDTO.class));
return (Page<SysLogLoginDTO>) convertedPage;
}
首先代码是没有任何问题的,经过排查和验证,最终定位到了是这个项目没有配置分页插件导致的,在项目中加上如下配置:
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(DataSourceProperties dataSourceProperties) {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
return interceptor;
}
}
然后重启项目,就搞定了,问题不大,笔者也就花了20分钟时间,但是遇到这个问题确实让我一下懵了。