springboot+mybatisplus配置mysql+greenplum多数据源的问题和解决办法

1,504 阅读1分钟

最近由于项目需求需要改造历史代码,增加greenplum连接,但是在操作时遇到问题:

一、现状:

1. 工程中已经使用了mybatisplus用于自动生成sql,这部分不能替换

2.使用了JdbcTemplate

二、改造过程中遇到的问题

1. 开始,只能在mac的idea上运行,windows的idea上运行报错,mvn package打包后运行报错;

2.然后,本地idea都能正常运行,但是 mvn package 打包后运行报错;

三、解决问题

1. pom.xml

2. 多数据源配置

为mysql 的 mapper配置的数据源

                                                                   图一

                                                                   图二

3. application.properties 文件自行配置

4.  启动类注解

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

四、解释

图一和图二是为指定的mapper分别配置了mysql 和 greenplum 数据源,

主要关注 图一

1. 由于配置了多数据源,并且项目中已经使用了JdbcTemplate,所以要先为JdbcTemplate指定一个数据源 dynamicDataSource 或者其他数据源,如果没有使用JdbcTemplate,则此处可以忽略

@Bean
public JdbcTemplate jdbcTemplate(@Qualifier("dynamicDataSource") DataSource dataSource) {
    return new JdbcTemplate(dataSource);
}

@Bean(name = "dynamicDataSource")
public DynamicDataSource DynamicDataSource(){
    return new DynamicDataSource();
}

2. GlobalConfig

由于之前的代码使用配置文件配置数据源,改造后使用了代码方式配置多数据源,因此,需要在代码中显示的调用方式加载配置

3. MybatisSqlSessionFactoryBean

因为项目使用了mybatisplus,因此在使用代码的方式配置数据源时,建议使用MybatisSqlSessionFactoryBean创建数据源,并且根据“图一”的方式进行配置,则能够正常启动。

4. @SpringBootApplication( exclude = DataSourceAutoConfiguration.class)

因为改造多数据源后,相当于手动的指定的了数据源,因此,不需要数据源自动装配