springboot 多数据源添加-Mybatis版

springboot 多数据源添加-Mybatis版


很久之前同学问起过springboot 如何添加数据源,一直没机会搞,这次抽空搞了下。本地准备好两个数据库,wst、my_test,具体教程参考 SpringBoot官网

Spring配置文件配置数据源连接信息

这里我整合了p6spy,可以忽略,和正常的数据库驱动一样。这里需要注意一点的是,spring.datasource.p0.url得改为spring.datasource.p0.jdbc-url,具体原因可以看下上面官网的回答。

spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
db.conn.info=useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&serverTimezone=UTC

spring.datasource.p0.jdbc-url=jdbc:p6spy:mysql://127.0.0.1:3306/wst?${db.conn.info}
spring.datasource.p0.username=root
spring.datasource.p0.password=123456
spring.datasource.p0.driver-class-name=com.p6spy.engine.spy.P6SpyDriver

spring.datasource.p1.jdbc-url=jdbc:p6spy:mysql://127.0.0.1:3306/my_test?${db.conn.info}
spring.datasource.p1.username=root
spring.datasource.p1.password=123456
spring.datasource.p1.driver-class-name=com.p6spy.engine.spy.P6SpyDriver

Spring代码配置

因为SpringBoot会自动读取application.properties中的数据源属性,所以需要手动在写下配置

配置数据源

/**
 * @program: springCloudZoo
 * @author: chuanyun.yang
 * @create: 2020-10-09 15:17
 **/
@Configuration
public class DataSourceConfig {

    @Bean(name = "firstDb")
    @ConfigurationProperties(prefix = "spring.datasource.p0")
    public DataSource firstDataSource(){
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondDb")
    @ConfigurationProperties(prefix = "spring.datasource.p1")
    public DataSource secondDataSource(){
        return DataSourceBuilder.create().build();
    }
}

整合mybatis,扫不同的mapper包,不同的包下放置对应的mapper,访问对应的数据库

/**
 * @program: springCloudZoo
 * @author: chuanyun.yang
 * @create: 2020-10-09 15:17
 **/
@MapperScan(basePackages = "com.lemon.springcloudmyeureka.mapper.firstdb", sqlSessionFactoryRef = "firstDbSqlSessionFactory")
@Configuration
public class FirstDbConfig {

    @Qualifier("firstDb")
    @Autowired
    private DataSource firstDataSource;

    @Bean
    public SqlSessionFactory firstDbSqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(firstDataSource);
        sqlSessionFactoryBean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath:mapper/firstdb/*.xml"));
        return sqlSessionFactoryBean.getObject();
    }

    @Bean
    public SqlSessionTemplate firstSqlSessionTemplate(SqlSessionFactory firstDbSqlSessionFactory) {
        return new SqlSessionTemplate(firstDbSqlSessionFactory);
    }
}
/**
 * @program: springCloudZoo
 * @author: chuanyun.yang
 * @create: 2020-10-09 15:17
 **/
@MapperScan(basePackages = "com.lemon.springcloudmyeureka.mapper.firstdb", sqlSessionFactoryRef = "firstDbSqlSessionFactory")
@Configuration
public class FirstDbConfig {

    @Qualifier("firstDb")
    @Autowired
    private DataSource firstDataSource;

    @Bean
    public SqlSessionFactory firstDbSqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(firstDataSource);
        sqlSessionFactoryBean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath:mapper/firstdb/*.xml"));
        return sqlSessionFactoryBean.getObject();
    }

    @Bean
    public SqlSessionTemplate firstSqlSessionTemplate(SqlSessionFactory firstDbSqlSessionFactory) {
        return new SqlSessionTemplate(firstDbSqlSessionFactory);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值