SpringBoot配置多数据源

1.引入依赖

<!-- mysql 依赖 -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.1.0</version>
</dependency>
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus</artifactId>
	<version>3.2.0</version>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>

2.配置数据源

spring:
  datasource:
    db1:
      driver-class-name: dm.jdbc.driver.DmDriver
      jdbc-url: jdbc:ip:port?useUnicode=true&useSSL=false&characterEncoding=utf8
      username: 
      password: 
    db2:
      driver-class-name: dm.jdbc.driver.DmDriver
      jdbc-url: jdbc:ip:port?useUnicode=true&useSSL=false&characterEncoding=utf8
      username: 
      password: 

3.配置mybatis

mybatis:
  # 实体扫描,多个package用逗号或者分号分隔
  type-aliases-package: com.entity
  mapper-locations: classpath:/mapper/*
  #输入日志
  logging:
  level:
    com:
      mapper:
       debug
  

4.配置数据源

@Configuration
@MapperScan(basePackages= {"com.mapper.db1"},sqlSessionFactoryRef="db1SqlSessionFactory")
public class DataSourceDb1Config {

    /**
     * 数据源配置
     * @return
     */
    @Bean(name="db1DataSource")
    @ConfigurationProperties(prefix="spring.datasource.db1")
    @Primary
    public DataSource testDataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     * 注入SqlSessionFactory
     * @param dataSource
     * @return
     * @throws Exception
     */
    @Bean(name="db1SqlSessionFactory")
    @Primary
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean=new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        return bean.getObject();
    }

    /**
     * 注入事务
     * @param dataSource
     * @return
     */
    @Bean(name="db1TransactionManager")
    @Primary
    public DataSourceTransactionManager testTransactionManager(@Qualifier("db1DataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }


    /**
     * 注入管理SqlSession
     */
    @Bean(name="db1SqlSessionTemplate")
    @Primary
    public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("db1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}
@Configuration
@MapperScan(basePackages= {"com.mapper.db2"},sqlSessionFactoryRef="db2SqlSessionFactory")
public class DataSourceDb2Config {

    /**
     * 数据源配置
     * @return
     */
    @Bean(name="db2DataSource")
    @ConfigurationProperties(prefix="spring.datasource.db2")
    @Primary
    public DataSource testDataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     * 注入SqlSessionFactory
     * @param dataSource
     * @return
     * @throws Exception
     */
    @Bean(name="db2SqlSessionFactory")
    @Primary
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("db2DataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean=new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        return bean.getObject();
    }

    /**
     * 注入事务
     * @param dataSource
     * @return
     */
    @Bean(name="db2TransactionManager")
    @Primary
    public DataSourceTransactionManager testTransactionManager(@Qualifier("db2DataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }


    /**
     * 注入管理SqlSession
     */
    @Bean(name="db2SqlSessionTemplate")
    @Primary
    public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("db2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

5.mapper接口要与resources的xml文件夹位置相对应上
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值