Springboot多数据源配置

application.yml配置文件:
spring:
datasource:
master:
url: jdbc:mysql://host:port/dataSource?serverTimezone=GMT%2b8
username: user
password: pwd
driver-class-name: com.mysql.cj.jdbc.Driver
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBeteenEvictionRunsMillis: 60000
minEvictableIdelTimeMillis: 300000
second:
platform: oracle
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@host:port/htjcoracle
username: user
password: pwd
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBeteenEvictionRunsMillis: 60000
minEvictableIdelTimeMillis: 300000
启动类:
package com.sgcc;

import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;

/**

  • 微服务应用服务启动类

  • 1、(@EnableDiscoveryClient)注解为链接微服务注册中心用,如实际环境中使用注册中心,请取消注释部分,

  • 与配置文件中相关注册中心配置信息结合使用。

  • @author zhangzz
    */
    @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class})
    @SpringBootApplication(scanBasePackages = {“com.sgcc”, “com.sgcc.uap.rest.annotation”, “com.sgcc.uap.mdd.runtime”})
    public class Application {

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

}
数据源配置类:
1第一数据源(主数据源)
package cn.com.esgcc.config;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

/**

  • @author chezhenqi

  • @date 2019/6/27 星期四

  • @time 9:51

  • @description xakjg
    */
    @Configuration
    @MapperScan(basePackages = “cn.com.esgcc.mapper”, sqlSessionTemplateRef = “masterSqlSessionTemplate”)
    public class MasterDataSourceConfig {
    @Primary
    @Bean(name = “masterDataSource”)
    @ConfigurationProperties(“spring.datasource.master”)
    public DataSource masterDataSource() {
    return DataSourceBuilder.create().build();
    }

    @Bean(name = “masterSqlSessionFactory”)
    public SqlSessionFactory masterSqlSessionFactory(@Qualifier(“masterDataSource”) DataSource dataSource) throws Exception {
    SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
    sessionFactoryBean.setDataSource(dataSource);
    sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(“classpath:mybatis/mapper/*.xml”));
    return sessionFactoryBean.getObject();
    }

    @Bean(name = “masterSqlSessionTemplate”)
    public SqlSessionTemplate masterSqlSessionTemplate(@Qualifier(“masterSqlSessionFactory”) SqlSessionFactory sqlSessionFactory) {
    return new SqlSessionTemplate(sqlSessionFactory);
    }

}
2第二数据源
package cn.com.esgcc.config;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

/**

  • @author chezhenqi

  • @date 2019/6/27 星期四

  • @time 9:51

  • @description xakjg
    */
    @Configuration
    @MapperScan(basePackages = “cn.com.esgcc.second”, sqlSessionTemplateRef = “secondSqlSessionTemplate”)
    public class SecondDataSourceConfig {
    @Bean(name = “secondDataSource”)
    @ConfigurationProperties(“spring.datasource.second”)
    public DataSource masterDataSource() {
    return DataSourceBuilder.create().build();
    }

    @Bean(name = “secondSqlSessionFactory”)
    public SqlSessionFactory secondSqlSessionFactory(@Qualifier(“secondDataSource”) DataSource dataSource) throws Exception {
    SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
    sessionFactoryBean.setDataSource(dataSource);
    sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(“classpath:mybatis/second/*.xml”));
    return sessionFactoryBean.getObject();
    }

    @Bean(name = “secondSqlSessionTemplate”)
    public SqlSessionTemplate secondSqlSessionTemplate(@Qualifier(“secondSqlSessionFactory”) SqlSessionFactory sqlSessionFactory) {
    return new SqlSessionTemplate(sqlSessionFactory);
    }

}
注意事项:
1.mybatis的classpath下必须有文件,否则会报错。
2.@Primary注解只能在一个数据源(主数据源)中使用,否则会报错。
3.数据源配置类中注入的bean是配套的,需要注意一下。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值