最近由于项目需求需要改造历史代码,增加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)
因为改造多数据源后,相当于手动的指定的了数据源,因此,不需要数据源自动装配