今日份鸡汤:藏不住的崩溃只是伤痕,藏起来的崩溃才是勋章~
问题出现:
在测试列表接口分页的时候,发现突然分页失效了?感到莫名其妙,毕竟昨天还好使,今早来怎么就突然不好使了,排查一下吧~
查了一些资料,都在这里总结一下吧:
不同版本的mybatis-plus需要的分页配置不同,是从3.4.0版本后开始出现的。
(1)在pom.xml中查看自己的mybatis-plus版本
(2)确保自己已经删除了pagehelper
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
如果有依赖这个pagehelper,要删除掉。
(3)建立需要的分页配置
旧版本(3.4.0之前)
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
新版本(3.4.0之后)
@Configuration
public class MybatisPlusConfig {
/**
* mybatis-plus分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
查看一下我项目中的版本:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
再查看我的配置,使用的也是PaginationInnerInterceptor,为了快速解决问题,那就看一下git提交的代码,发现Mybatis数据源变成动态多数据源了,看了一下那块代码,应该是写动态数据源的时候,自定义的mybatis的配置覆盖了已有的配置。那么解决方法就知道了,只要在配置中增加分页器即可。
问题解决:
在sqlSessionFactory中注入
@Primary
@Bean("mysqlSqlSessionFactory")
public MybatisSqlSessionFactoryBean mysqlSqlSessionFactory(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
MybatisConfiguration configuration = new MybatisConfiguration();
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
configuration.addInterceptor(interceptor);
bean.setConfiguration(configuration);
bean.setDataSource(dataSource);
bean.setTypeAliasesPackage(TYPE_ALIASES_PACKAGE);
return bean;
}
至此分页正常了,问题解决了。
网友评论