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: 123456
2. 創(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)文章
spring?boot如何配置靜態(tài)路徑詳解(404出現(xiàn)的坑)
這篇文章主要給大家介紹了關(guān)于spring?boot如何配置靜態(tài)路徑的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-02-02淺談Java循環(huán)中的For和For-each哪個更快
本文主要介紹了淺談Java循環(huán)中的For和For-each哪個更快,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08解決springboot responseentity<string>亂碼問題
這篇文章主要介紹了解決springboot responseentity<string>亂碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07Java定時任務(wù)schedule和scheduleAtFixedRate的異同
本文主要介紹了Java定時任務(wù)schedule和scheduleAtFixedRate的異同,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Java數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹詳解
二叉搜索樹作為一個經(jīng)典的數(shù)據(jù)結(jié)構(gòu),具有鏈表的快速插入與刪除的特點,同時查詢效率也很優(yōu)秀,所以應(yīng)用十分廣泛。本文將詳細講講二叉搜索樹的原理與實現(xiàn),需要的可以參考一下2022-06-06MyBatis入門學(xué)習(xí)教程(一)-MyBatis快速入門
MyBatis是一個支持普通SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架,這篇文章主要給大家分享MyBatis入門學(xué)習(xí)教程(一)-MyBatis快速入門,需要的朋友可以參考下2015-08-08java對象和json的來回轉(zhuǎn)換知識點總結(jié)
在本篇文章里小編給大家分享了一篇關(guān)于java對象和json的來回轉(zhuǎn)換知識點總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-01-01