SpringBoot+Mybatis 配置多个数据源

建立多个数据源

application.yml

datasource1:
  jdbc-url: jdbc:mysql://localhost:3306/tableName1?useUnicode=true&characterEncoding=utf8
  driver-class-name: com.mysql.jdbc.Driver
  username: root
  password: root
datasource2:
  jdbc-url: jdbc:mysql://localhost:3306/tableName2?useUnicode=true&characterEncoding=utf8
  driver-class-name: com.mysql.jdbc.Driver
  username: root
  password: root
datasource3:
  jdbc-url: jdbc:mysql://localhost:3306/tableName3?useUnicode=true&characterEncoding=utf8
  driver-class-name: com.mysql.jdbc.Driver
  username: root
  password: root
datasource4:
  jdbc-url: jdbc:mysql://localhost:3306/tableName4?useUnicode=true&characterEncoding=utf8
  driver-class-name: com.mysql.jdbc.Driver
  username: root
  password: root

数据资源注入DataSource中

@Configuration
public class DataSourceConfig {

    @Bean(name = "dbOneDataSource")
    @Primary
    @ConfigurationProperties(prefix = "datasource1") // application.properteis中对应属性的前缀
    public DataSource dbOneDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "dbTwoDataSource")
    @ConfigurationProperties(prefix = "datasource2") // application.properteis中对应属性的前缀
    public DataSource dbTwoDataSource() {

        return DataSourceBuilder.create().build();
    }

    @Bean(name = "dbThreeDataSource")
    @ConfigurationProperties(prefix = "datasource3") // application.properteis中对应属性的前缀
    public DataSource dbThreeDataSource() {

        return DataSourceBuilder.create().build();
    }

    @Bean(name = "dbFourDataSource")
    @ConfigurationProperties(prefix = "datasource4") // application.properteis中对应属性的前缀
    public DataSource dbFourDataSource() {
        return DataSourceBuilder.create().build();
    }
}

配置数据源与对应接口映射

public class MybatisConfig {


    @Configuration
    @MapperScan(basePackages = {"com.xxx.ceshi.mapper.useraction"},
            sqlSessionFactoryRef = "sqlSessionFactoryFour",
            sqlSessionTemplateRef ="sqlSessionTemplateFour" )
    public static class DBFour{
        @Resource
        DataSource dbFourDataSource;


        @Bean
        public SqlSessionFactory sqlSessionFactoryFour() throws Exception {
            System.out.println("datasource4配置");
            SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
            factoryBean.setDataSource(dbFourDataSource);
            factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/useraction/*.xml"));
            return factoryBean.getObject();

        }

        @Bean
        public SqlSessionTemplate sqlSessionTemplateFour() throws Exception {
            SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryFour()); // 使用上面配置的Factory
            return template;
        }
    }


}

这里MapperScan里面的路径填写 该数据源 对应的mapper接口的包名

getResources里面填写的是 resources 资源中对应的xml文件 路径名

我这里就写一个 其他三个 一样 改的就是对应包名和对应的类名和方法名

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值