起因:@DS原本有效,加上@Transactional注解后发现报错,后检测是数据源切换失败。
原因:@Transactional在service层已经创建,此时数据源已经确认为默认的主数据源,再进入mapper进行数据操作时,@DS注解失效。
解决方案:
站在巨人肩膀上开发,使用@DSTransactional注解即可,此注解可以在保证切换数据源的前提下创建事务,实测简单业务没问题。(暂时没搞明白如何手动回滚)
注意:
1.参考有的文章备注了不可用@Transactional同用,可能造成死锁,未测试,不建议尝试。
2.该注解版本在3.2.1以上版本可用。
3.版本在3.4之前要mapper必须要加@DS注解配置数据源。