MybatisPlus 多数据源切换@DS注解失效问题解决
在业务开发中使用到了多数据源,遇到了@DS注解失效问题,有两个场景使用到同一个@DS的查询方法,一个正常,另一个失效。
伪代码如下:
@Service
public class UserService {
@Autowired
private OtherService other;
// 正常
public void writeAndRead() {
other.query();
}
// 失效
@Transactional
public void writeAndRead() {
other.query();
userMapper.insert(...);
}
}
@DS("slave")
@Service
public class OtherService {
public void query() {
mapper.selectList(...);
}
}场景一和二正常都打印了@DS中的key

后续排查发现是失效场景中使用了事务注解 @Transactional,事务注解会绑定数据源,导致@DS失效,后续解决方案是在使用@DS切换数据源的类方法上加入一下代码:
@DS("slave")
@Service
public class OtherService {
// 非事务性地执行
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void query() {
mapper.selectList(...);
}
}到此这篇关于MybatisPlus 多数据源切换@DS注解失效问题解决的文章就介绍到这了,更多相关MybatisPlus @DS注解失效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Spring Boot高级教程之Spring Boot连接MySql数据库
这篇文章主要为大家详细介绍了Spring Boot高级教程之Spring Boot连接MySql数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-10-10
IntelliJ IDEA安装目录和设置目录的说明(IntelliJ IDEA快速入门)
这篇文章主要介绍了IntelliJ IDEA安装目录和设置目录的说明(IntelliJ IDEA快速入门),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-04-04
SpringBoot整合MybatisPlusGernerator实现逆向工程
在我们写项目的时候,我们时常会因为需要创建很多的项目结构而头疼,本文主要介绍了SpringBoot整合MybatisPlusGernerator实现逆向工程,具有一定的参考价值,感兴趣的可以了解一下2024-05-05
java基于正则提取字符串中的数字功能【如提取短信中的验证码】
这篇文章主要介绍了java基于正则提取字符串中的数字功能,可用于提取短信中的验证码,涉及java基于正则的字符串匹配相关操作技巧,需要的朋友可以参考下2017-01-01
Windows下安装ElasticSearch的方法(图文)
这篇文章主要介绍了Windows下安装ElasticSearch的方法(图文),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-01-01
Spring容器刷新obtainFreshBeanFactory示例详解
这篇文章主要为大家介绍了Spring容器刷新obtainFreshBeanFactory示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-03-03


最新评论