網站首頁 編程語言 正文
前言
最近項目中需要查詢不同的數據庫的表,恰好Mybatis-plus支持多數據源,特此記錄。
官方地址:文檔-documentation
特性
- 支持?數據源分組?,適用于多種場景 純粹多庫 讀寫分離 一主多從 混合模式。
- 支持數據庫敏感配置信息?加密?ENC()。
- 支持每個數據庫獨立初始化表結構schema和數據庫database。
- 支持無數據源啟動,支持懶加載數據源(需要的時候再創建連接)。
- 支持?自定義注解?,需繼承DS(3.2.0+)。
- 提供并簡化對Druid,HikariCp,BeeCp,Dbcp2的快速集成。
- 提供對Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等組件的集成方案。
- 提供?自定義數據源來源?方案(如全從數據庫加載)。
- 提供項目啟動后?動態增加移除數據源?方案。
- 提供Mybatis環境下的?純讀寫分離?方案。
- 提供使用?spel動態參數?解析數據源方案。內置spel,session,header,支持自定義。
- 支持?多層數據源嵌套切換?。(ServiceA >>> ServiceB >>> ServiceC)。
- 提供 **基于seata的分布式事務方案。
- 提供?本地多數據源事務方案。
使用方法
1.引入依賴:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
2.配置數據源
spring:
datasource:
dynamic:
primary: master #設置默認的數據源或者數據源組,默認值即為master
strict: false #嚴格匹配數據源,默認false. true未匹配到指定數據源時拋異常,false使用默認數據源
datasource:
master:
url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver # 3.2.0開始支持SPI可省略此配置
slave_1:
url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
slave_2:
url: ENC(xxxxx) # 內置加密,使用請查看詳細文檔
username: ENC(xxxxx)
password: ENC(xxxxx)
driver-class-name: com.mysql.jdbc.Driver
#......省略
#以上會配置一個默認庫master,一個組slave下有兩個子庫slave_1,slave_2
3.使用?@DS?切換數據源
@DS?可以注解在方法上或類上,同時存在就近原則 方法上注解 優先于 類上注解
注解 | 結果 |
沒有@DS | 默認數據源 |
@DS("dsName") | dsName可以為組名也可以為具體某個庫的名稱 |
代碼:
package com.wl.demo.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wl.demo.entity.User;
import com.wl.demo.service.UserService;
import com.wl.demo.mapper.UserMapper;
import org.springframework.stereotype.Service;
/**
* @author 13058
* @description 針對表【tb_user】的數據庫操作Service實現
* @createDate 2022-07-22 21:11:28
*/
@Service
@DS("slave_1")
public class UserServiceImpl extends ServiceImpl<UserMapper, User>
implements UserService{
}
?
原文鏈接:https://blog.csdn.net/wl_Honest/article/details/125940474
相關推薦
- 2022-09-27 如何在Python中利用matplotlib.pyplot畫出函數圖詳解_python
- 2022-10-04 SQL語句中的DDL類型的數據庫定義語言操作_MsSql
- 2023-04-14 拯救強迫癥Android?Builder模式_Android
- 2022-11-14 React前端路由應用介紹_React
- 2022-07-23 C#中三種Timer計時器的詳細用法_C#教程
- 2022-12-19 python的sorted函數及使用解析_python
- 2022-11-25 k8s?中的?service?如何找到綁定的?Pod?及實現?Pod?負載均衡的方法_云其它
- 2022-10-19 react+antd實現動態編輯表格數據_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支