springboot实现连接多个数据源
dynamic datasource
导入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.6</version>
</dependency>
编写配置文件
spring:
datasource:
dynamic:
primary: ds1 # 设置默认的数据源或者数据源组,默认值即为master,如果你主从默认下主库的名称就是master可不定义此项。
strict: fasle # 严格匹配数据源,默认fasle,true未匹配到指定数据源的时候抛异常
datasource:
ds1:
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://47.xxx.xx.xxx:3306/dynamic?characterEncoding=utf8&useSSL=false
ds2:
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://47.xxx.xx.xxx:3307/dynamic?characterEncoding=utf8&useSSL=false
#......省略
#以上会配置一个默认库ds1,一个组slave下有两个子库ds1,ds2
如何使用
在service层方法上加上 @DS("xxx")注解即可指定数据库
@DS("ds1")
public User getByUserId1(String userId){
return userDao.getById(Integer.parseInt(userId));
}
@DS("ds2")
public User getByUserId2(String userId){
return userDao.getById(Integer.parseInt(userId));
}
@DS("ds1")
public void insertUserDs1((String name,String age)){
userDao.insertUserDs1(name,age);
}
@DS("ds2")
public void insertUserDs2((String name,String age)){
userDao.insertUserDs2(name,age);
}
如何实现多数据源事务
在方法上加上@DSTransactional注解即可
@DSTransactional
public void insertUserAll(String name,String age){
UserService userService = (UserService) AopContext.currentProxy();
userService.insertUserDs1(name,age);
userService.insertUserDs2(name,age);
}
如果该方法抛出异常则会回滚
本文来自博客园,作者:没有烦恼的猫猫,转载请注明原文链接:https://www.cnblogs.com/maomao777/p/17073163.html
分类:
springboot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~