springboot后端配置多個(gè)數(shù)據(jù)源、Mysql數(shù)據(jù)庫的便捷方法
1、修改application.properties
新建 Mapper、實(shí)體類 相應(yīng)的文件夾,將不同數(shù)據(jù)源的文件保存到對應(yīng)的文件夾下
# test1 數(shù)據(jù)庫的配置 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 數(shù)據(jù)庫的配置 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 配置 實(shí)體類 文件路徑 mybatis.type-aliases-package=com.xxx.entity.test1, com.xxx.entity.test2
2、添加綁定數(shù)據(jù)庫配置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 主數(shù)據(jù)源配置
* @author: JackLee
* @create: 2020-08-09 09:30
* @version: 1.0
**///
掃描 Mapper 接口并容器管理
@MapperScan(basePackages = Test1DataSourceConfig.PACKAGE, sqlSessionFactoryRef = "test1SqlSessionFactory")
@Configuration
public class Test1DataSourceConfig {
// 精確到 test1 目錄,以便跟其他數(shù)據(jù)源隔離
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 其他數(shù)據(jù)源配置
* @author: JackLee
* @create: 2020-08-09 09:30
* @version: 1.0
**/
// 掃描 Mapper 接口并容器管理
@MapperScan(basePackages = Test2DataSourceConfig.PACKAGE, sqlSessionFactoryRef = "test2SqlSessionFactory")
@Configuration
public class Test2DataSourceConfig {
// 精確到 test2 目錄,以便跟其他數(shù)據(jù)源隔離
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下要存在文件 ),不然可能檢測不到
- 需要繼續(xù)添加數(shù)據(jù)源就再加一個(gè)其他數(shù)據(jù)源
以上就是方便快捷實(shí)現(xiàn)springboot 后端配置多個(gè)數(shù)據(jù)源、Mysql數(shù)據(jù)庫的詳細(xì)內(nèi)容,更多關(guān)于springboot 后端配置多個(gè)數(shù)據(jù)源、Mysql數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!希望大家以后多多支持腳本之家!
- Springboot2.0配置JPA多數(shù)據(jù)源連接兩個(gè)mysql數(shù)據(jù)庫方式
- springboot 中 druid+jpa+MYSQL數(shù)據(jù)庫配置過程
- SpringBoot項(xiàng)目實(shí)現(xiàn)關(guān)閉數(shù)據(jù)庫配置和springSecurity
- Springboot2 集成 druid 加密數(shù)據(jù)庫密碼的配置方法
- Spring\SpringBoot配置連接數(shù)據(jù)庫的方法
- 啟動springboot應(yīng)用因未配置數(shù)據(jù)庫報(bào)錯(cuò)的解決方案
相關(guān)文章
Java實(shí)現(xiàn)List集合轉(zhuǎn)樹形結(jié)構(gòu)的示例詳解
在開發(fā)中,我們通常需要將從數(shù)據(jù)庫中查詢的集合數(shù)據(jù)轉(zhuǎn)換成類似文件系統(tǒng)一樣的樹形集合。本文將利用Java語言實(shí)現(xiàn)這一功能,感興趣的可以了解一下2022-08-08
Spring?Cloud?Gateway整合sentinel?實(shí)現(xiàn)流控熔斷的問題
本文給大家介紹下?spring?cloud?gateway?如何整合?sentinel實(shí)現(xiàn)流控熔斷,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友一起看看吧2022-02-02
SpringCloud之微服務(wù)容錯(cuò)的實(shí)現(xiàn)
這篇文章主要介紹了SpringCloud之微服務(wù)容錯(cuò)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
java.lang.IllegalStateException異常原因和解決辦法
這篇文章主要給大家介紹了關(guān)于java.lang.IllegalStateException異常原因和解決辦法,IllegalStateException是Java標(biāo)準(zhǔn)庫中的一個(gè)異常類,通常表示在不合適或無效的情況下執(zhí)行了某個(gè)方法或操作,需要的朋友可以參考下2023-07-07
Spring Boot 2 整合 QuartJob 實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理功能
Quartz是一個(gè)完全由java編寫的開源作業(yè)調(diào)度框架,形式簡易,功能強(qiáng)大。接下來通過本文給大家分享Spring Boot 2 整合 QuartJob 實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理功能,感興趣的朋友一起看看吧2019-11-11
三分鐘讀懂mybatis中resultMap和resultType區(qū)別
這篇文章主要給大家介紹了mybatis中resultMap和resultType區(qū)別的相關(guān)資料,resultType和resultMap都是mybatis進(jìn)行數(shù)據(jù)庫連接操作處理返回結(jié)果的,需要的朋友可以參考下2023-07-07
Java9新特性Stream流API優(yōu)化與增強(qiáng)
這篇文章主要為大家介紹了Java9新特性Stream流API優(yōu)化與增強(qiáng)的用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步,早日升職加薪2022-03-03

