springboot項目如何配置多數(shù)據(jù)源
springboot項目配置多數(shù)據(jù)源
1. 配置多個數(shù)據(jù)源
首先,你需要在application.yml或application.properties中配置多個數(shù)據(jù)源。
例如:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
one:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: xxs
password: 123456
two:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: xxs
password: 1234562. 創(chuàng)建數(shù)據(jù)源配置類
對于每個數(shù)據(jù)源,你需要創(chuàng)建一個配置類來定義DataSource、SqlSessionFactory和MapperScan。
例如:
@Configuration
@MapperScan(basePackages = "com.xxs.mapper.db1", sqlSessionFactoryRef = "db1SqlSessionFactory")
public class DataSourceOneConfig {
@Bean(name = "db1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.one")
public DataSource db1DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "db1SqlSessionFactory")
public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db1/*.xml"));
return sessionFactory.getObject();
}
}對于第二個數(shù)據(jù)源,創(chuàng)建另一個配置類:
@Configuration
@MapperScan(basePackages = "com.xxs.mapper.db2", sqlSessionFactoryRef = "db2SqlSessionFactory")
public class DataSourceTwoConfig {
@Bean(name = "db2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.two")
public DataSource db2DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "db2SqlSessionFactory")
public SqlSessionFactory db2SqlSessionFactory(@Qualifier("db2DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db2/*.xml"));
return sessionFactory.getObject();
}
}3. 配置事務(wù)管理器
對于每個數(shù)據(jù)源,你還需要配置相應(yīng)的事務(wù)管理器:
@Bean(name = "db1TransactionManager")
public DataSourceTransactionManager db1TransactionManager(@Qualifier("db1DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "db2TransactionManager")
public DataSourceTransactionManager db2TransactionManager(@Qualifier("db2DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}4. 使用不同的Mapper
現(xiàn)在你可以在不同的包路徑下創(chuàng)建對應(yīng)的Mapper接口,并在對應(yīng)的Mapper XML文件中編寫SQL語句。
例如,com.xxs.mapper.db1包下的Mapper接口將使用第一個數(shù)據(jù)源,而com.xxs.mapper.db2包下的Mapper接口將使用第二個數(shù)據(jù)源。
這樣,你就可以在Spring Boot項目中配置不同數(shù)據(jù)庫的Mapper,并實現(xiàn)跨數(shù)據(jù)庫操作了。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java獲取年月日(格式:xxxx年xx月xx日)的方法詳解
在開發(fā)應(yīng)用程序時,經(jīng)常需要獲取當前的年、月、日,并以特定格式進行展示或處理,本文將介紹如何獲取年月日,并將其格式化為“xxxx年xx月xx日”的形式,幫助你在應(yīng)用程序中處理日期信息,需要的朋友可以參考下2023-10-10
SpringCloud openfeign相互調(diào)用實現(xiàn)方法介紹
在springcloud中,openfeign是取代了feign作為負載均衡組件的,feign最早是netflix提供的,他是一個輕量級的支持RESTful的http服務(wù)調(diào)用框架,內(nèi)置了ribbon,而ribbon可以提供負載均衡機制,因此feign可以作為一個負載均衡的遠程服務(wù)調(diào)用框架使用2022-11-11
spring中JdbcTemplate操作oracle的存儲過程實例代碼
JdbcTemplate是Spring對JDBC的封裝,目的是使JDBC更加易于使用,JdbcTemplate是Spring的一部分,下面這篇文章主要給大家介紹了關(guān)于spring中JdbcTemplate操作oracle的存儲過程的相關(guān)資料,需要的朋友可以參考下2023-04-04
Springboot中實現(xiàn)策略模式+工廠模式的方法
這篇文章主要介紹了Springboot中實現(xiàn)策略模式+工廠模式,具體策略模式和工廠模式的UML我就不給出來了,使用這個這兩個模式主要是防止程序中出現(xiàn)大量的IF ELSE IF ELSE....,接下來咱們直接實現(xiàn)Springboot策略模式工廠模式2022-03-03

