springboot后端配置多个数据源、Mysql数据库的便捷方法

 更新时间:2021年08月11日 17:36:13   作者:JACKLI71  
实现springboot 后端配置多个数据源、Mysql数据库,只需要新建 Mapper、实体类 相应的文件夹,将不同数据源的文件保存到对应的文件夹下,添加绑定数据库配置Config,就可以轻松完成

1、修改application.properties

新建 Mapper、实体类 相应的文件夹,将不同数据源的文件保存到对应的文件夹下

# test1 数据库的配置
test1.spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
test1.spring.datasource.jdbc-url=jdbc:mysql://localhost:3306/database1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
test1.spring.datasource.username=username
test1.spring.datasource.password=password
# test2 数据库的配置
test2.spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
test2.spring.datasource.jdbc-url=jdbc:mysql://localhost:3306/database2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
test2.spring.datasource.username=username
test2.spring.datasource.password=password
# 配置 mybatis 配置 mapper.xml 文件路径mybatis.mapper-locations=classpath:/mapper/*.xml,classpath:/mapper/test1/*.xml,classpath:/mapper/test2/*.xml
# 配置 mybatis 配置 实体类 文件路径
mybatis.type-aliases-package=com.xxx.entity.test1, com.xxx.entity.test2

2、添加绑定数据库配置Config

1)Test1DataSourceConfig.java

package com.xxx.config.dataSource;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
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 org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
/** * @program: test1 主数据源配置
* @author: JackLee 
* @create: 2020-08-09 09:30 
* @version: 1.0
**/// 
扫描 Mapper 接口并容器管理
@MapperScan(basePackages = Test1DataSourceConfig.PACKAGE, sqlSessionFactoryRef = "test1SqlSessionFactory")
@Configuration
public class Test1DataSourceConfig {
// 精确到 test1 目录,以便跟其他数据源隔离 
static final String PACKAGE = "com.xxx.dao.test1"; 
static final String MAPPER_LOCATION = "classpath:mapper/test1/*.xml"; 
@Value("${test1.spring.datasource.jdbc-url}") 
private String url; 
@Value("${test1.spring.datasource.username}") 
private String user; 
@Value("${test1.spring.datasource.password}") 
private String password; 
@Value("${test1.spring.datasource.driver-class-name}") 
private String driverClass; 
@Bean(name = "test1DataSource") 
@Primary 
public DataSource test1DataSource() {
DruidDataSource dataSource = new DruidDataSource(); 
dataSource.setDriverClassName(driverClass); 
dataSource.setUrl(url); 
dataSource.setUsername(user); 
dataSource.setPassword(password); 
return dataSource; 
} 
@Bean(name = "test1TransactionManager") 
@Primary 
public DataSourceTransactionManager test1TransactionManager() { 
return new DataSourceTransactionManager(test1DataSource()); 
} 
@Bean(name = "test1SqlSessionFactory") 
@Primary 
public SqlSessionFactory test1SqlSessionFactory(@Qualifier("test1DataSource") DataSource test1DataSource) 
throws Exception { 
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); 
sessionFactory.setDataSource(test1DataSource); 
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() 
.getResources(Test1DataSourceConfig.MAPPER_LOCATION)); 
return sessionFactory.getObject(); 
}

}

2)Test2DataSourceConfig.java

package com.xxx.config.dataSource;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
/** 
* @program: test2 其他数据源配置 
* @author: JackLee 
* @create: 2020-08-09 09:30 
* @version: 1.0 
**/
// 扫描 Mapper 接口并容器管理
@MapperScan(basePackages = Test2DataSourceConfig.PACKAGE, sqlSessionFactoryRef = "test2SqlSessionFactory")
@Configuration
public class Test2DataSourceConfig {   
 // 精确到 test2 目录,以便跟其他数据源隔离    
 static final String PACKAGE = "com.xxx.dao.test2";    
 static final String MAPPER_LOCATION = "classpath:mapper/test2/*.xml";   

 @Value("${test2.spring.datasource.jdbc-url}")    
 private String url;   

 @Value("${test2.spring.datasource.username}")    
 private String user;   

 @Value("${test2.spring.datasource.password}")    
 private String password;   

 @Value("${test2.spring.datasource.driver-class-name}")   
 private String driverClass;  
 
 @Bean(name = "test2DataSource")    
 public DataSource test2DataSource() {       
 DruidDataSource dataSource = new DruidDataSource();        
 dataSource.setDriverClassName(driverClass);        
 dataSource.setUrl(url);        
 dataSource.setUsername(user);        
 dataSource.setPassword(password);        
 return dataSource;    
 }   
 @Bean(name = "test2TransactionManager")   
 public DataSourceTransactionManager test2TransactionManager() {       
 return new DataSourceTransactionManager(test2DataSource());    
 }    
 @Bean(name = "test2SqlSessionFactory")   
 public SqlSessionFactory test2SqlSessionFactory(@Qualifier("test2DataSource") DataSource test2DataSource)           
 throws Exception {       
 final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();        
 sessionFactory.setDataSource(test2DataSource);        
 sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()                
 .getResources(Test2DataSourceConfig.MAPPER_LOCATION));
 return sessionFactory.getObject();    }

}

搞定,轻轻松松~

注:

  • mapper文件夹下新建的文件夹需要有 *.xml 文件( 即:classpath:/mapper/xxx/*.xml下要存在文件 ),不然可能检测不到
  • 需要继续添加数据源就再加一个其他数据源

以上就是方便快捷实现springboot 后端配置多个数据源、Mysql数据库的详细内容,更多关于springboot 后端配置多个数据源、Mysql数据库的资料请关注脚本之家其它相关文章!希望大家以后多多支持脚本之家!

相关文章

  • Spring Security前后分离校验token的实现方法

    Spring Security前后分离校验token的实现方法

    这篇文章主要介绍了Spring Security前后分离校验token的方法,本次token生成采取jwt的方式,通过引入jwt依赖文件配置token管理器,对Spring Security校验token相关知识感兴趣的朋友一起看看吧
    2022-02-02
  • Java线程池必知必会知识点总结

    Java线程池必知必会知识点总结

    这篇文章主要给大家介绍了关于Java线程池必知必会知识点的相关资料,文中通过图文以及实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-02-02
  • Java加载property文件配置过程解析

    Java加载property文件配置过程解析

    这篇文章主要介绍了java加载property文件配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Spring @Async无法实现异步的解决方案

    Spring @Async无法实现异步的解决方案

    这篇文章主要介绍了Spring @Async无法实现异步的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java数据结构及算法实例:插入排序 Insertion Sort

    Java数据结构及算法实例:插入排序 Insertion Sort

    这篇文章主要介绍了Java数据结构及算法实例:插入排序 Insertion Sort,本文直接给出实例代码,代码中包含详细注释,需要的朋友可以参考下
    2015-06-06
  • springboot实现异步任务

    springboot实现异步任务

    这篇文章主要为大家详细介绍了springboot实现异步任务,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • java图搜索算法之图的对象化描述示例详解

    java图搜索算法之图的对象化描述示例详解

    这篇文章主要为大家介绍了java图搜索算法之图的对象化描述示例详解,可以带你秒杀所有的图搜索算法,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • Java输入学号、姓名、年龄并对其进行输出的实现方法

    Java输入学号、姓名、年龄并对其进行输出的实现方法

    这篇文章主要给大家介绍了关于Java输入学号、姓名、年龄并对其进行输出的实现方法,在计算机编程中,输出学号和姓名是一个常见的任务,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • Java swing实现支持录音等功能的钢琴程序

    Java swing实现支持录音等功能的钢琴程序

    这篇文章主要为大家详细介绍了Java swing实现钢琴程序,支持录音等功能的Java钢琴源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • FutureTask为何单个任务仅执行一次原理解析

    FutureTask为何单个任务仅执行一次原理解析

    这篇文章主要为大家介绍了FutureTask为何单个任务仅执行一次原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11

最新评论