美文网首页
spring boot 配置多数据源

spring boot 配置多数据源

作者: 長得太帥忚四種檌 | 来源:发表于2020-02-14 16:22 被阅读0次

1. 配置数据库信息

spring.datasource.girl-images.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.girl-images.username=dba_gxm
spring.datasource.girl-images.password=root
spring.datasource.girl-images.jdbc-url=jdbc:mysql://localhost:3306/girl_images?useUnicode=true&serverTimezone=Hongkong&characterEncoding=UTF-8

spring.datasource.myimages.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.myimages.username=dba_myimages
spring.datasource.myimages.password=root
spring.datasource.myimages.jdbc-url=jdbc:mysql://localhost:3306/myimages?useUnicode=true&serverTimezone=Hongkong&characterEncoding=UTF-8

2.不同数据库对应的mapper和pojo放在不同的包中

package.png

3.创建配置类

数据库1:
GirlImagesDataSourceConfig.java:

@Configuration
@MapperScan(basePackages = "com.gongxm.images.mapper",sqlSessionFactoryRef = "girlImagesSqlSessionFactory")
public class GirlImagesDataSourceConfig {
    
    
    //配置数据源
    @Bean(name = "girlImagesDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.girl-images")
    @Primary
    public DataSource getDataSource() {
        return DataSourceBuilder.create().build();
    }
    
    
    //创建SqlSessionFactory, 需要数据源作为参数
    @Bean(name = "girlImagesSqlSessionFactory")
    @Primary
    public SqlSessionFactory getSqlSessionFactory(@Qualifier("girlImagesDataSource")DataSource ds) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(ds);
        return factoryBean.getObject();
    }
    
    
    //配置事务管理器, 需要数据源作为参数
    @Bean(name = "girlImagesTX")
    @Primary
    public DataSourceTransactionManager getDataSourceTransactionManager(@Qualifier("girlImagesDataSource")DataSource ds) {
        return new DataSourceTransactionManager(ds);
    }
    
    //配置SqlSessionTemplate
    @Bean(name = "girlImagesSqlSessionTemplate")
    @Primary
    public SqlSessionTemplate getSqlSessionTemplate(@Qualifier("girlImagesSqlSessionFactory")SqlSessionFactory sf) {
        return new SqlSessionTemplate(sf);
    }

}

数据库2:
MyImagesDataSourceConfig.java:

@Configuration
@MapperScan(basePackages = "com.gongxm.myimages.mapper",sqlSessionFactoryRef = "myimagesSqlSessionFactory")
public class MyImagesDataSourceConfig {
    
    
    //配置数据源
    @Bean(name = "myimagesDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.myimages")
    public DataSource getDataSource() {
        return DataSourceBuilder.create().build();
    }
    
    
    //创建SqlSessionFactory, 需要数据源作为参数
    @Bean(name = "myimagesSqlSessionFactory")
    public SqlSessionFactory getSqlSessionFactory(@Qualifier("myimagesDataSource")DataSource ds) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(ds);
        return factoryBean.getObject();
    }
    
    
    //配置事务管理器, 需要数据源作为参数
    @Bean(name = "myimagesTX")
    public DataSourceTransactionManager getDataSourceTransactionManager(@Qualifier("myimagesDataSource")DataSource ds) {
        return new DataSourceTransactionManager(ds);
    }
    
    //配置SqlSessionTemplate
    @Bean(name = "myimagesSqlSessionTemplate")
    public SqlSessionTemplate getSqlSessionTemplate(@Qualifier("myimagesSqlSessionFactory")SqlSessionFactory sf) {
        return new SqlSessionTemplate(sf);
    }

}

配置完成, 这样配置后, 调用对应的mapper对象, 它就会自动使用对应的数据库了

注意事项:

porperties文件:
一个数据源的jdbc地址使用url来配置
多数据源中的jdbc地址使用jdbc-url来配置

相关文章

网友评论

      本文标题:spring boot 配置多数据源

      本文链接:https://www.haomeiwen.com/subject/axqjfhtx.html