spingBoot配置多个数据源之分包方案

本文详细介绍如何在Spring Boot项目中配置和使用多个数据源,包括数据源的创建、属性配置、MyBatis集成及Mapper扫描,适用于复杂业务场景下的数据库操作。
在业务中如果一个项目要连接多个数据库查
#配置多个数据源
spring.datasource.auth.jdbc-url=jdbc:mysql://rm-..rds.aliyuncs.com:3306/test1?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
spring.datasource.secret.username=
spring.datasource.secret.password=
spring.datasource.auth.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.auth.type=com.alibaba.druid.pool.DruidDataSource



spring.datasource.secret.jdbc-url=jdbc:mysql://rm-.rds.aliyuncs.com:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
spring.datasource.secret.username=
spring.datasource.secret.password=
spring.datasource.secret.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.secret.type=com.alibaba.druid.pool.DruidDataSource


#第一个数据源



/**
 * createUser:JAVA_TOM
 * FileName: AuthDataSourceConfig
 * Author:   14562
 * Date:     2019/9/17 10:45
 * Description: 第一个数据库
 */
package com.shuhe360.auth.shuhe_secret.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.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

@Configuration
//配置你的mapper包路径,意味着此路径下将使用此数据源  sqlSessionFactoryRef 请保证此名字唯一信
@MapperScan(basePackages = "com.shuhe360.auth.shuhe_secret.mapper.auth"
        ,sqlSessionFactoryRef = "authSqlSessionFactory"
)
public class AuthDataSourceConfig {
    @Bean(name="authDataSource")
    //你的配置文件中的前缀
    @ConfigurationProperties(prefix = "spring.datasource.auth")
    public DataSource authDataSource() {
        return DataSourceBuilder.create().build();
    }
    //与上方sqlSessionFactoryRef名字相同
    @Bean(name = "authSqlSessionFactory")
    public SqlSessionFactory authSqlSessionFactory(@Qualifier("authDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setMapperLocations(
        //配置mapper的路径
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/auth/*.xml"));
        return bean.getObject();
    }
    @Bean("authSqlSessionTemplate")
    public SqlSessionTemplate authSqlSessionTemplate(
            @Qualifier("authSqlSessionFactory") SqlSessionFactory sessionfactory) {
        return new SqlSessionTemplate(sessionfactory);
    }

}
#第二个数据源
/**
 * createUser:JAVA_TOM
 * FileName: SecretDataSourceConfig
 * Author:   14562
 * Date:     2019/9/17 10:46
 * Description: 第二个数据库
 */
package com.shuhe360.auth.shuhe_secret.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.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
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;
@Configuration
@MapperScan(basePackages = "com.shuhe360.auth.shuhe_secret.mapper.secret"
        ,sqlSessionFactoryRef = "secretSqlSessionFactory"
)
public class SecretDataSourceConfig {
   //Primary 表示默认数据源
    @Bean(name="secretDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.secret")
    @Primary
    public DataSource secretDataSource() {
        return DataSourceBuilder.create().build();
    }
    //Primary 表示默认数据源
    @Bean(name = "secretSqlSessionFactory")
    @Primary
    public SqlSessionFactory secretSqlSessionFactory(@Qualifier("secretDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/secret/*.xml"));
        return bean.getObject();
    }
   //Primary 表示默认数据源
    @Bean("secretSqlSessionTemplate")
    @Primary
    public SqlSessionTemplate secretSqlSessionTemplate(
            @Qualifier("secretSqlSessionFactory") SqlSessionFactory sessionfactory) {
        return new SqlSessionTemplate(sessionfactory);
    }
}

![Image text](E:\working space\notes\SpringBoot\1568897483(1).jpg)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值