spring boot配置多数据源后,mybatisPlus全局配置失效问题解决

通过druid配置多数据源后,发现mybatis-plus.global-config配置通通失效了

spring boot配置多数据源后,mybatisPlus全局配置失效问题解决_第1张图片

不生效原因:配置多数据源后,数据源对应的SqlSessionFactoryBean是单独设置的,没有加载在properties内的config配置

解决方案:重新将配置set到SqlSessionFactoryBean

配置引入

    /** 全局自定义配置 */
    @Bean(name = "globalConfig")
    @ConfigurationProperties(prefix = "mybatis-plus.global-config")
    public GlobalConfig globalConfig(){
        return new GlobalConfig();
    }

set配置

    @Autowired
    @Qualifier("globalConfig")
    private GlobalConfig globalConfig;


    @Bean(name = "tianjiSqlSessionFactory")
    public SqlSessionFactory tianjiSqlSessionFactory(@Qualifier("tianji") DataSource dataSource) throws Exception {
        /** 当使用myBatis-plus的时候需要使用 MybatisSqlSessionFactoryBean */
        MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        /**当使用多数据源时,mybatisPlus默认配置将会失效,需要单独将其注入数据源中 */
        bean.setPlugins(plugins);
        /** 设置全局配置 */
        bean.setGlobalConfig(globalConfig);
        return bean.getObject();
    }

druid启动自动连接数据库方法

druid多数据源启动时,默认不会自动连接数据库的,当第一次从连接池中去获取连接的时候,就会进行初始化,因此表现为第一次请求需要先建立initial-size个连接,导致首次请求返回速度较慢,这时需要设置一个初始化方法,已解决这个问题:

@Bean(name = "tianji",initMethod = "init",destroyMethod = "close")
@ConfigurationProperties(prefix = "spring.datasource.druid.tianji")
public DataSource dataSource() {
    return DruidDataSourceBuilder.create().build();
}

init方法已经内置在druid中,IDEA如有报红忽略即可

你可能感兴趣的:(java后端,mysql,数据库)