已解决
动态数据源自定义SqlSessionFactoryBean时mybatis plus配置失效
来自网友在路上 156856提问 提问时间:2023-10-20 08:19:24阅读次数: 56
最佳答案 问答题库568位专家为你答疑解惑
环境:
- 动态数据源
- spring-boot 2.7.15
- mybatis-plus 3.5.2
yaml配置:
spring:datasource:db100:username: xxxpassword: xxxjdbc-url: jdbc:kingbase8://xxx.xxx.xxx.xxx:54321/100driver-class-name: com.kingbase8.Driver# url: jdbc:postgresql://xxx.xxx.xxx.xxx:54321/100?serverTimezone=Asia/Shanghai&useSSL=false# driverClassName: org.postgresql.Driverdb101:username: xxxpassword: xxxjdbc-url: jdbc:kingbase8://xxx.xxx.xxx.xxx:54321/101driver-class-name: com.kingbase8.Driverdb104:username: xxxpassword: xxxjdbc-url: jdbc:kingbase8://xxx.xxx.xxx.xxx:54321/104driver-class-name: com.kingbase8.Drivermybatis-plus:mapper-locations: classpath*:**mapper/*.xmlconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
实际运行的时候,发现mybatis-plus相关的配置都失效了。
这是因为我们自定义SqlSessionFactoryBean
@Beanpublic MybatisSqlSessionFactoryBean dynamicDataSourceSqlSessionFactory(@Qualifier("dynamicDataSource") DataSource dynamicDataSource) throws Exception {MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dynamicDataSource);return sqlSessionFactoryBean;}
解决方式:
@Bean@Scope("prototype")@ConfigurationProperties(prefix = "mybatis-plus.global-config")public GlobalConfig globalConfig(){return new GlobalConfig();}@Bean//@Scope("prototype")@ConfigurationProperties(prefix = "mybatis-plus.configuration")public MybatisConfiguration mybatisConfiguration(){return new MybatisConfiguration();}
SqlSessionFactoryBean修改:
@MapperScan(basePackages = "com.etoak.wsdhla.mapper", sqlSessionFactoryRef = "dynamicDataSourceSqlSessionFactory")
@Configuration
public class DataSourceConfig {@Bean@Primary@ConfigurationProperties(prefix = "spring.datasource.db100")public DataSource dataSource100() {return DataSourceBuilder.create().build();}@Bean@ConfigurationProperties(prefix = "spring.datasource.db101")public DataSource dataSource101() {return DataSourceBuilder.create().build();}@Bean@ConfigurationProperties(prefix = "spring.datasource.db104")public DataSource dataSource104() {return DataSourceBuilder.create().build();}@Bean@Scope("prototype")@ConfigurationProperties(prefix = "mybatis-plus.global-config")public GlobalConfig globalConfig(){return new GlobalConfig();}@Bean//@Scope("prototype")@ConfigurationProperties(prefix = "mybatis-plus.configuration")public MybatisConfiguration mybatisConfiguration(){return new MybatisConfiguration();}/*** 将动态代理数据源对象放入Spring容器中*/@Beanpublic DynamicDataSource dynamicDataSource(@Qualifier("dataSource100") DataSource dataSource100, @Qualifier("dataSource101") DataSource dataSource101, @Qualifier("dataSource104") DataSource dataSource104) {// 这个地方是比较核心的targetDataSource 集合是我们数据库和名字之间的映射Map<Object, Object> targetDataSource = new HashMap<>();targetDataSource.put("db100", dataSource100);targetDataSource.put("db101", dataSource101);targetDataSource.put("db104", dataSource104);DynamicDataSource dataSource = new DynamicDataSource();// 设置所有的数据源dataSource.setTargetDataSources(targetDataSource);// 设置默认使用的数据源对象dataSource.setDefaultTargetDataSource(dataSource100);return dataSource;}@Beanpublic MybatisSqlSessionFactoryBean dynamicDataSourceSqlSessionFactory(@Qualifier("dynamicDataSource") DataSource dynamicDataSource) throws Exception {MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dynamicDataSource);// 设置数据库mapper的xml文件路径sqlSessionFactoryBean .setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));sqlSessionFactoryBean.setConfiguration(mybatisConfiguration());sqlSessionFactoryBean.setGlobalConfig(globalConfig());return sqlSessionFactoryBean;}
}
查看全文
99%的人还看了
相似问题
- ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)
- .NET6使用MiniExcel根据数据源横向导出头部标题及数据
- 【Spring】使用三方包进行数据源对象(数据库)管理
- mybatis-plus3.5.3.1 支持不同数据源sql适配
- Python与ArcGIS系列(六)查找和修复数据源
- SpringBoot实现mysql与clickhouse多数据源
- SpringBoot使用MyBatis多数据源
- springboot中多数据源配置和使用
- 若依分离版——配置多数据源(mysql和oracle),实现一个方法操作多个数据源
- GNSS常用数据源汇总
猜你感兴趣
版权申明
本文"动态数据源自定义SqlSessionFactoryBean时mybatis plus配置失效":http://eshow365.cn/6-20178-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!