论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
数据库
›
Nosql
›
【第21章】MyBatis-Plus多数据源支持
【第21章】MyBatis-Plus多数据源支持
梦见你的名字
论坛元老
|
2024-11-19 09:21:26
|
显示全部楼层
|
阅读模式
楼主
主题
1589
|
帖子
1589
|
积分
4767
前言
随着项目规模的扩大,单一数据源已无法满足复杂业务需求,多数据源(动态数据源)应运而生。本文将先容两种 MyBatis-Plus 的多数据源扩展插件:开源生态的 dynamic-datasource 和 企业级生态的 mybatis-mate。
一、dynamic-datasource
dynamic-datasource 是一个开源的 Spring Boot 多数据源启动器,提供了丰富的功能,包罗数据源分组、敏感信息加密、独立初始化表布局等。
1. 特性
数据源分组
:适用于多种场景,如读写分离、一主多从等。
敏感信息加密
:使用 ENC() 加密数据库配置信息。
独立初始化
:支持每个数据库独立初始化表布局和数据库。
自界说注解
:支持自界说注解,需继承 DS。
简化集成
:提供对 Druid、HikariCP 等毗连池的快速集成。
组件集成
:支持 Mybatis-Plus、Quartz 等组件的集成方案。
动态数据源
:支持项目启动后动态增长或移除数据源。
分布式事务
:提供基于 Seata 的分布式事务方案。
2. 约定
本框架专注于数据源切换,不限制详细操作。
配置文件中以下划线_ 分割的数据源首部为组名。
切换数据源可以是组名或详细数据源名。
默认数据源名为 master,可通过 spring.datasource.dynamic.primary 修改。
方法上的注解优先于类上的注解。
3. 使用方法
3.1 引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${version}</version>
</dependency>
复制代码
3.2 配置数据源
spring:
datasource:
dynamic:
primary: master
strict: false
datasource:
master:
url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
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
复制代码
3.3 使用 @DS 切换数据源
@Service
@DS("slave")
public class UserServiceImpl implements UserService {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
@DS("slave_1")
public List selectByCondition() {
return jdbcTemplate.queryForList("select * from user where age >10");
}
}
复制代码
更多使用教程请参考Dynamic-Datasource 官网
二、mybatis-mate
mybatis-mate 是一个 MyBatis-Plus 的付费企业组件,内置很多好用的高级特性,其中包罗多数据源扩展组件,提供了高效简单的多数据源支持。
1.特性
注解 @Sharding:支持通过注解切换数据源。
配置:支持灵活的数据源配置。
动态加载卸载:支持动态加载和卸载数据源。
多数据源事务:支持 JTA Atomikos 分布式事务。
2.使用方法
2.1 配置数据源
mybatis-mate:
sharding:
primary: mysql
datasource:
mysql:
- key: node1
...
- key: node2
cluster: slave
...
postgres:
- key: node1
...
复制代码
2.2 使用 @Sharding 切换数据源
@Mapper
@Sharding("mysql")
public interface UserMapper extends BaseMapper<User> {
@Sharding("postgres")
Long selectByUsername(String username);
}
复制代码
2.3 切换指定数据库节点
// 切换到 mysql 从库 node2 节点
ShardingKey.change("mysqlnode2");
复制代码
更多使用示例请参考
多数据源动态加载卸载:
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
梦见你的名字
论坛元老
这个人很懒什么都没写!
楼主热帖
【docker系列】四种基础网络模式及自定 ...
MySQL高可用架构搭建实战
小白怎么入门网络安全?看这篇就够啦! ...
kubernetes常用命令-1-命令补全 ...
1.1 大数据简介-hadoop-最全最完整的保 ...
'林子雨大数据' 实验3 HBase操 ...
Cilium系列-9-主机路由切换为基于 BPF ...
这些行业注意了:“谨防互联网门户钓鱼 ...
北京智游科技(爱加密)-渗透测试实习 ...
Xcode Run Script 脚本
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
边缘计算
运维.售后
IOS
快速回复
返回顶部
返回列表