论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
Nosql
›
【第21章】MyBatis-Plus多数据源支持
【第21章】MyBatis-Plus多数据源支持
梦见你的名字
金牌会员
|
2024-11-19 09:21:26
|
显示全部楼层
|
阅读模式
楼主
主题
817
|
帖子
817
|
积分
2451
前言
随着项目规模的扩大,单一数据源已无法满足复杂业务需求,多数据源(动态数据源)应运而生。本文将先容两种 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-最全最完整的保 ...
【OpenCV 例程200篇】203. 伪彩色图像 ...
net core 3.1使用identityServer登录时 ...
'林子雨大数据' 实验3 HBase操 ...
这些行业注意了:“谨防互联网门户钓鱼 ...
北京智游科技(爱加密)-渗透测试实习 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表