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);
}

如果该方法抛出异常则会回滚

springboot实现连接多个数据源的更多相关文章

  1. Springboot配置连接两个数据库

    背景: 项目中需要从两个不同的数据库查询数据,之前实现方法是:springboot配置连接一个数据源,另一个使用jdbc代码连接. 为了改进,现在使用SpringBoot配置连接两个数据源 实现效果: ...

  2. springboot入门系列(四):SpringBoot和Mybatis配置多数据源连接多个数据库

    SpringBoot和Mybatis配置多数据源连接多个数据库 目前业界操作数据库的框架一般是 Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑.在SpringBo ...

  3. SpringBoot文档翻译系列——29.SQL数据源

    原创作品,可以转载,但是请标注出处地址: 因为需要使用到这方面内容,所有对这一部分进行了翻译. 29  使用SQL数据源 SpringBoot为SQL数据源提供了广泛支持,从直接使用JdbcTempl ...

  4. spring boot 连接多个数据源

    在springboot中有需要连接多个数据源的情况. 首先配置文件application.properties中添加两个数据源连接字符串 mybatis.type-aliases-package=co ...

  5. SpringBoot整合MyBatisPlus配置动态数据源

    目录 SpringBoot整合MyBatisPlus配置动态数据源 SpringBoot整合MyBatisPlus配置动态数据源 推文:2018开源中国最受欢迎的中国软件MyBatis-Plus My ...

  6. Springboot+mybatis+druid 配置多数据源

    项目结构 application.yml配置文件 spring: application: name: service datasource: primary: jdbc-url: jdbc:orac ...

  7. springboot和mybatis 配置多数据源

    主数据源(由于代码没有办法复制的原因,下面图片和文字不一致) package com.zhianchen.mysqlremark.toword.config;import com.zaxxer.hik ...

  8. springBoot专题3---->springBoot与多数据源的配置

    最近有点忙,更新有点慢.今天进来说说一说springBoot中如何配置多数据源. 第一,新建一个名为springBoot-mutidata的maven项目,完整的pom.xml配置如下: <?x ...

  9. Springboot spring data jpa 多数据源的配置01

    Springboot spring data jpa 多数据源的配置 (说明:这只是引入了多个数据源,他们各自管理各自的事务,并没有实现统一的事务控制) 例: user数据库   global 数据库 ...

  10. Spring学习11-Spring使用proxool连接池 管理数据源

    Spring 一.Proxool连接池简介及其配置属性概述   Proxool是一种Java数据库连接池技术.是sourceforge下的一个开源项目,这个项目提供一个健壮.易用的连接池,最为关键的是 ...

随机推荐

  1. mongodb删除某个字段

    如下 db.yourcollection.update({ "需要删除的字段": { "$exists": true } }, { "$unset&q ...

  2. oracle的IP访问列表

    Windows版本Oracle 19c. 在sqlnet.ora中添加下面语句 tcp.validnode_checking=yes tcp.invited_nodes=(127.0.0.1,132. ...

  3. 「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

      为了让学习的知识融汇贯通,目前是把所有的集群都放在了一个虚拟机上,如果这个虚拟机宕机了怎么办?俗话说鸡蛋不要都放在一个篮子里面,把各种集群的节点拆分部署,应该把各种节点分机器部署,多个宿主机,这样 ...

  4. Lambda表达式--java进阶day03

    1.Lambda表达式 2.Lambda表达式格式 ()放我们要重写的方法的形参,{}放我们要写的逻辑 show()没有形参,所以空着,我们将打印语句写入{}中 如图,匿名内部类和Lambda都出现了 ...

  5. 关于TFDMemtable的使用场景【2】处理SOAP/REST取得的数据

    如果可以直接获得JSON数据,那么可以直接连到TFDMemtable进行显示和编辑. 1.一组REST组件.RESTClient的属性BaseURL是http地址. 2.点击TRESTRequest右 ...

  6. 在类 Unix 系统中将 Nginx 源码导入 CLion 并调试运行

    零.写在最前面 0.1 关于系统 如标题所述,本文的操作需要一个类 Unix 系统(MacOS.CentOS.Ubuntu 等). 同时这些类 Unix 系统还需要有 gcc 编译器.具体如何搞定这些 ...

  7. FREERTOS指令测试的思考

    采用freertos编程后,有必要增加指令测试的功能:   1.便于对于软件各个子模块或功能点进行测试.   2.便于对硬件各个功能点是否正常进行测试. 在裸机编程中,我们一般使用串口进行运行数据的打 ...

  8. Chrome 135 版本开发者工具(DevTools)更新内容

    Chrome 135 版本开发者工具(DevTools)更新内容 一.性能(Performance)面板改进 1. 性能面板中的配置文件和函数调用现已显示来源和脚本链接 Performance > ...

  9. 使用xxxbase应付CRUD后端任务

    很多的后端CRUD开发任务都是毫无意义的, 如果使用firebase/supabase/pocketbase这些工具快速应付这些任务才是重要的. 如果是一位研究生, 在面对导师的垃圾横向的时候, 这种 ...

  10. 如何使用CSS和JS使网页页面灰掉

    让页面灰掉,通常是通过CSS样式或JavaScript来实现.以下是一些具体的方法: 一.使用CSS样式 应用filter属性 CSS的filter属性可以用来对元素应用图形效果,如灰度.要将整个页面 ...