首页 > 其他分享 >springboot实现连接多个数据源

springboot实现连接多个数据源

时间:2023-01-29 17:00:25浏览次数:41  
标签:String 数据源 age dynamic name ds1 连接 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);
}

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

标签:String,数据源,age,dynamic,name,ds1,连接,springboot
From: https://www.cnblogs.com/maomao777/p/17073163.html

相关文章

  • SpringBoot中配置Redis
    SpringBoot中整合Redis缓存背景:工作中需要用到缓存之前都是用ConcurrentHashMap公司不让用redis那我就小试牛刀一下前端的App、网页在登录时,或是用户在进行一些敏感......
  • Linux删除软连接
    概述:如何在linux服务器上正确且安全的删除软连接?例子:touchabc.txttouchzzz.txtecho'testtesttest'>zzz.txtln-szzz.txtzcw示例图:软连接已生效,可以......
  • golang连接操作mysql
    golang操作mysqlpackagemainimport("database/sql""fmt""time"_"github.com/go-sql-driver/mysql")//定义一个全局db对象vardb*sql.DB......
  • 3.远程连接、防火墙、关机
    1.ssh协议SecureShell,安全外壳协议,简称ssh,是一种建立在应用层基础上的安全协议,通过对密码进行加密传输验证,可在不安全的网络中对网络服务提供安全的传输环境,实现ssh客户......
  • 写了个"网络连接管理"软件,以后做这事情方便了
                                       支持Win2K,WinXp,Win2003,..'-------------------------------------------'作者:唐细刚'-----......
  • springboot启动原理分析
    https://blog.csdn.net/weixin_40496191/article/details/109098491?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIS......
  • 【Python视频下载】Python字符串连接的5种方法
    导读在使用Python的时候,经常会进行字符串操作,本文总结了一下Python字符串连接的5种方法,希望对大家有所帮助。1.加号第一种,有编程经验的人,估计都知道很多语言里面是用加号连......
  • springboot文件读取
    1、读取本工程下的文件@AutowiredprivateResourceLoaderresourceLoader;Resourceresource=resourceLoader.getResource("classpath:\\file\\二标段.xlsx");......
  • 7.10 SQL Server全外连接查询
    SQLServerFullOuterJoin目录SQLServerFullOuterJoinSQLServer全外连接简介全连接示例SQLServer全外连接简介全外连接也称全连接,效果很像左连接和右连接的结合......
  • 7.11 SQL Server交叉连接
    SQLServerCrossJoin目录SQLServerCrossJoin交叉连接简介交叉连接简介语法:SELECT select_listFROM T1CROSSJOINT2;交叉连接将第一表(T1)的每一行与第二表(T2......