spring boot项目多数据源处理

spring boot项目多数据源处理

基于《spring boot集成mybatis》,增加一套数据源配置信息,多数据源配置的实质就是让不同的MybatisConfig作用于对应的mapper目录,获取不同的数据库连接信息:

1、yml文件中增加了数据库连接信息
spring boot项目多数据源处理
2、增加了一个MybatisBConfig,用来处理另一个数据源:

@Configuration
@EnableConfigurationProperties(BaseDataSourceConfig.class)
@MapperScan(basePackages = {"com.wj.spc.demo_1203.dao.bMapper"}, sqlSessionTemplateRef = "bSqlSessionTemplate")
public class MybatisBConfig {

    @Autowired
    private BaseDataSourceConfig baseDataSourceConfig;

    @Value("${spring.datasource.secondary.url}")
    private String jdbcUrl;

    @Value("${spring.datasource.secondary.password}")
    private String password;

    @Value("${spring.datasource.secondary.username}")
    private String username;

    @Bean(name = "bDataSource")
    public DataSource dataSource() {
        HikariConfig config = new HikariConfig();

        config.setJdbcUrl(jdbcUrl);
        config.setUsername(username);
        config.setPassword(password);
        config.setReadOnly(baseDataSourceConfig.isReadOnly());
        config.setConnectionTimeout(baseDataSourceConfig.getConnectionTimeout());
        config.setIdleTimeout(baseDataSourceConfig.getIdleTimeout());
        config.setMaxLifetime(baseDataSourceConfig.getMaxLifetime());
        config.setMaximumPoolSize(baseDataSourceConfig.getMaximumPoolSize());
        config.setMinimumIdle(baseDataSourceConfig.getMinimumIdle());
        config.setAutoCommit(baseDataSourceConfig.isAutoCommit());
        config.setConnectionTestQuery(baseDataSourceConfig.getConnectionTestQuery());

        return new HikariDataSource(config);

    }

    @Bean(name = "bSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("bDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        sessionFactory.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/bMappers/*.xml"));

        return sessionFactory.getObject();
    }

    @Bean(name = "bSqlSessionTemplate")
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("bSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

3、增加一个对应的DataSourceTransactionManager:
spring boot项目多数据源处理