Springboot mybatisplus 配置多数据源 很简单就三步

由于废话有点多先说结论

总共就三步没什么内容

  • 数据库(xxx-jdbc)和@DS (dynamic)两个依赖
  • yml配置datasource
  • 用到其他 非 主数据源的方法上添加注解@DS("数据源名字")
  • 注意事项

目录

第一步 前置条件

第二步 yml配置

第三步 运行测试

注意事项

@DS无效情况:

@Transactional 事务无效


第一步 前置条件

在原有的基础上 (之前的单数据库 的项目能运行的基础上)

添加依赖 mybatisplus提供的dynamic 和 第二个数据库的驱动

<!-- dynamic配置工具 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>${mybatis-plus-dynamic.version}</version>
</dependency>

<!-- 这里添加第二个数据库 根据自己需求添加相应的驱动依赖 -->
<!-- 我用的第二个数据库是时序数据库 TDengine -->
<dependency>
    <groupId>com.taosdata.jdbc</groupId>
    <artifactId>taos-jdbcdriver</artifactId>
    <version>3.2.2</version>
</dependency>

第二步 yml配置

修改yml配置文件

原来的配置 ↓

spring:
  application:
    name: iot-cloud
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    password: root
    username: root
    url: jdbc:mysql://localhost:3306/easyiot?serverTimezone=GMT%2B8&rewriteBatchedStatements=true

修改后 ↓ (注意这里写了两个datasource: 别漏了-也注意一下缩进对齐)

spring:
  application:
    name: iot-cloud
  datasource:
    dynamic:
      #设置默认的数据源或者数据源组-默认值即为mysql
      primary: mysql
      datasource:
        mysql:
          driver-class-name: com.mysql.cj.jdbc.Driver
          password: root
          username: root
          url: jdbc:mysql://localhost:3306/easyiot?serverTimezone=GMT%2B8&rewriteBatchedStatements=true
        taos:
          driver-class-name: com.taosdata.jdbc.rs.RestfulDriver
          password: root
          username: root
          url: jdbc:TAOS-RS://192.168.0.80:6041/history_sensor_data?timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8

其他数据库例子(数据源命名master还是mysql还是oracle都无所谓记住命名就行)

注意修改后的yml字体颜色橙色与黄色才是正确的

错误示例 ↓

 

 如果出现警告提示"Cannot resolve...."肯定是哪里写错了或是缩进没弄好

第三步 运行测试

先说结果直接在需要用到其他数据源的方法上添加@DS("xxx")

示例

@DS("taos")
@RequestMapping("sqlTest/taos")
public List<IotHistorySensorData> test2() {
    return mapper.selectTaos();
}

@DS可以直接加载serviceImpl具体某个方法上(不加@DS就是默认数据库mysql)

结尾有注意事项

--- 

先启动项目确保能运行

随便开放一个新controller接口用来测试

先测试原来的(不能加了新数据库原来的反而不能用了,所以先测试原来的接口看看)

 

 然后写一下第二个数据库的sql语句 直接写mybatis的mapper就行了没什么特殊的

 然后调用

和原来不同的地方是在调用的方法上添加了一个@DS("xxx")注解

xxx就是刚刚在yml中配置的数据源名字

运行访问接口

 

注意事项

@DS无效情况:

  • 注解添加service(Service 接口)无效
  • 注解添加service(Service 接口)的方法上无效
  • 注解添加到mapper接口类上无效
  • 数据源名称最好不要包含下滑线 下滑线的数据源切换不了
  • 测试的时候在private方法上@DS失效了不知道是不是该类没有注入Spring的原因, 放在service和controller里@DS就没问题

@Transactional 事务无效

还有用到多数据源的方法上使用事务@Transactional好像会有问题

简单说一下

// 将代码修改如下, 两个方法设置事务传播机制为「propagation = Propagation.REQUIRES_NEW」

// 原:
@Transactional(rollbackFor = RuntimeException.class)

// 改为 (原来可能只有一个@Transactional,改完后好像要改成用到的每个方法都加上这句话)
@Transactional(rollbackFor = RuntimeException.class, propagation = Propagation.REQUIRES_NEW)

由于这里还没遇到这种需求-大家自己网上看看吧

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SpringBoot可以使用MyBatis-Plus实现多数据源配置多数据源配置是指在一个应用中配置多个数据库连接,并能够根据需要选择使用哪个数据库。通过MyBatis-Plus,可以方便地配置和使用多个数据源。 在配置多数据源时,可以使用MyBatis-Plus提供的注解和配置类来实现。可以根据需要配置多个数据源,每个数据源对应一个数据库。例如,可以配置MySQL数据库、PostgreSQL数据库和Doris数据库作为不同的数据源。 具体配置方法可以参考引用和引用中提到的文章。这些文章详细介绍了如何在SpringBoot中整合MyBatis-Plus并配置动态数据源。你可以根据这些文章的参考来配置你的多数据源。 在配置完成后,你可以根据需要在代码中选择使用哪个数据源进行数据库操作。通过配置多数据源,你可以在一个应用中同时操作多个数据库,方便实现复杂的业务逻辑。 总之,SpringBootMyBatis-Plus提供了方便的方式来配置和使用多数据源,可以满足在一个应用中操作多个数据库的需求。你可以参考相关文档并按照需求进行配置和使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【应用】SpringBoot -- 基于 MyBatis-Plus 实现多数据源配置](https://blog.csdn.net/zqf787351070/article/details/127775519)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [SpringBoot整合MyBatisPlus配置动态数据源的方法](https://download.csdn.net/download/weixin_38659646/12749115)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值