SpringBoot配置多个DataSource(数据源)

SpringBoot默认支持单个DataSource,现在很多项目也不再采用单个数据库进行操作,所以学会配置多个DataSource是很有必要的

1.在启动类@SpringBootApplication中设置排除掉DataSourceAutoConfiguration.class,因为springboot项目会自动加载,代码如下

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class CollegeApplication {

    public static void main(String[] args) {
        SpringApplication.run(CollegeApplication.class, args);
    }

}

2.配置yml文件,我拿其中的一个举例datasource-college

server:
  port: 8081
spring:
  datasource-college:
    url: jdbc:mysql://127.0.0.1:3306/college?characterEncoding=utf-8
    type: com.alibaba.druid.pool.DruidDataSource
    username: root
    password: root
  datasource-blogs:
    url: jdbc:mysql://127.0.0.1:3306/blogs?characterEncoding=utf-8
    type: com.alibaba.druid.pool.DruidDataSource
    username: root
    password: root

3.DataSource配置类,配置一个DataSource就重新创建一个配置类

(可以直接cv,注意改路径名,还有name属性,防止name一致)

@Configuration
//basePackages 指定dao包  sqlSessionFactoryRef 要和SqlSessionFactory定义的Bean名称一样
@MapperScan(basePackages = { "org.dingxf.dao1" }, sqlSessionFactoryRef = "collegeSqlSessionFactory")
public class SqlSessionFactoryCollegeConfig {

    //mapper扫描xml文件的路径
    static final String MAPPER_LOCATION = "org/dingxf/mapper1/*.xml";

    /**
     * 配置数据源
     */
    @Bean(name = "dataSourceCollege")
    //prefix的值要和yml文件中的一致
    @ConfigurationProperties(prefix = "spring.datasource-college")
    public DataSource dataSourceCollege(){
        return DataSourceBuilder.create().build();
    }

    /**
     * 配置SqlSessionFactory
     */
    @Bean(name = "collegeSqlSessionFactory")
    public SqlSessionFactory collegeSqlSessionFactory(@Qualifier("dataSourceCollege") DataSource dataSource) throws Exception{
        //final SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        //用这个MybatisSqlSessionFactoryBean是因为我用的是mybatis普拉斯 用上面的会报错
        final MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        //这里注意getResources()方法,一定要加s因为有一个方法是getResource()
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION));
        return sqlSessionFactoryBean.getObject();
    }
}

这样就配置完成了!

测试结果

 

 

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值