【MyBatis-Plus 动态数据源的默认行为】

MyBatis-Plus 动态数据源的默认行为

MyBatis-Plus 动态数据源的默认行为

在代码中切换数据源到qixiang数据库,但是在yml配置信息中,注释掉qixiang数据库的配置信息,发现默认调用了配置的master数据库。


代码仍可以正常进行,并且查询了master数据库中的数据。

可能的原因分析:

  1. 默认的主数据源行为
    虽然您的配置中没有显式设置 primary: master,但动态数据源组件可能会:

将第一个定义的数据源(master)作为默认数据源

当找不到指定数据源时,使用第一个数据源作为回退

  1. 版本特定的默认行为
    不同版本的 MyBatis-Plus 动态数据源可能有不同的默认 strict 设置。

建议添加明确配置:

为了确保行为可预测,建议添加明确的配置:

详细配置信息:

bash 复制代码
spring:
  datasource:
    dynamic:
      primary: master # 明确指定主数据源
      strict: false   # 明确设置宽松模式
      druid:
        # ... 现有的druid配置
      datasource:
        master:
          # ... 现有配置
        yushuiqing:
          # ... 现有配置
        # qixiang:  # 注释掉的数据源

结论:

您的配置能够回退到 master 数据库的原因可能是:

MyBatis-Plus 动态数据源组件的默认行为:在某些版本中,当 strict 未明确设置时,默认可能是 false

顺序依赖:master 作为第一个定义的数据源被用作默认回退

推荐做法:还是建议添加明确的 primary 和 strict 配置,这样代码的行为会更加明确和可维护。

相关推荐
wanderist.4 分钟前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
海天鹰1 小时前
PHP上传文件
android·开发语言·php
腻害兔1 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:IM 即时通讯模块,一个被低估的「全功能聊天系统」
java·前端·vue.js·产品经理·ai编程
心念枕惊2 小时前
.NET CORE 授权进阶-角色、策略与动态权限实现
java·前端·.netcore
Yeauty2 小时前
渲染成图再 CLI 拼接,还是进程内直推?Rust 帧到视频的两条路
开发语言·rust·音视频
geovindu3 小时前
CSharp: Breadth First Search Algorithm and Depth First Search Algorithm
开发语言·后端·算法·c#·.net·搜索算法
景同学3 小时前
把 AI 用到线上运维:可行、有效,前提是喂足信息——一次 Full GC 排障实录
java·人工智能·后端
库克克4 小时前
【C++】set 与multiset
开发语言·c++
Wang's Blog4 小时前
Go-Zero项目开发34: 微服务超时控制与重试机制实践
开发语言·微服务·golang·go-zero
C++、Java和Python的菜鸟4 小时前
第7章 后端Web实战(Tlias系统)
java