springboot多数据源配置

1.添加依赖

以maven项目为例,修改pom.xml文件添加依赖,如果是gradle修改build.gradle文件

<dependencies>  
    <!-- Spring Boot Starter Data JPA -->  
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-data-jpa</artifactId>  
    </dependency>  
    <!-- 数据库驱动,以MySQL为例 -->  
    <dependency>  
        <groupId>mysql</groupId>  
        <artifactId>mysql-connector-java</artifactId>  
        <scope>runtime</scope>  
    </dependency>  
    <!-- Spring Boot Starter Web(如果需要Web支持) -->  
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-web</artifactId>  
    </dependency>  
    <!-- 其他依赖... -->  
</dependencies>

2.配置数据源

再application.properties或者application.yml文件

spring:  
  datasource:  
    db1:  
      url: jdbc:mysql://localhost:3306/db1  
      username: user1  
      password: pass1  
      driver-class-name: com.mysql.cj.jdbc.Driver  
    db2:  
      url: jdbc:mysql://localhost:3306/db2  
      username: user2  
      password: pass2  
      driver-class-name: com.mysql.cj.jdbc.Driver  
  

3.配置文件

@MapperScan(basePackages = "com.demo.mapper.db1",sqlSessionFactoryRef = "db1SF")
@Configuration
public class Db1MapperConfig {
}

@MapperScan(basePackages = "com.demo.mapper.db2",sqlSessionFactoryRef = "db2SF")
@Configuration
public class Db2MapperConfig {
}


@Configuration
public class DataSourceConfig {
    @Bean(name = "db1Ds")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.db1")
    public DataSource db1DS(){
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "db2Ds")
    @ConfigurationProperties(prefix = "spring.datasource.db2")
    public DataSource db2DS(){
        return DataSourceBuilder.create().build();
    }
    

    @Primary
    @Bean(name = "db1SF")
    public SqlSessionFactory mainSF(@Qualifier("db1Ds")DataSource dataSource) throws Exception{
        MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
        mybatisSqlSessionFactoryBean.setDataSource(dataSource);
        mybatisSqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db1/*.xml"));
        return mybatisSqlSessionFactoryBean.getObject();
    }

    @Bean(name = "db2SF")
    public SqlSessionFactory targetSF(@Qualifier("db2Ds")DataSource dataSource) throws Exception{
        MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        mybatisSqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db2/*.xml"));
        return sqlSessionFactoryBean.getObject();
    }
   

    /**
     * 事务管理
     * @param dataSource
     * @return
     */
    @Bean(name = "db1TM")
    public DataSourceTransactionManager mainTM(@Qualifier("db1Ds") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
    @Bean(name = "db2TM")
    public DataSourceTransactionManager targetTM(@Qualifier("db2Ds") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
   
}

4.项目结构

-sec
- - main
- - - -com
- - - - -demo
- - - - - -config
- - - - - - -Db1MapperConfig.java
- - - - - - -Db2MapperConfig.java
- - - - - - -DataSourceConfig.java
- - - - - -mapper
- - - - - - -db1
- - - - - - - -Db1Mapper.java
- - - - - - -db2
- - - - - - - -Db2Mapper.java
- - -java
- - -resources
- - - -application.yaml

5这样使用Db1Mapper的方法调用的就是db1数据源,使用Db2Mapper的方法调用的就是db2数据源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值