V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whnoob
V2EX  ›  Java

mybatis-plus 多数据源事务问题

  •  
  •   whnoob · 2020-02-08 11:29:20 +08:00 · 5469 次点击
    这是一个创建于 1750 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1. 数据源情况

    • 涉及不同数据库:mysql、postgresql
    • 没有用 mybatis-plus 自带的多数据源,因为涉及多子模块的项目引用,需要动态修改扫描实现 sourceConfig
    • 定义了两个事务管理器 transaction

    2. 问题描述

    • mybatis-plus ServiceImpl 基类上,对于增删改方法添加了事务配置,这个时候如果不指定用哪个事务管理器,会提示存在多个,不知道用哪个的提示 exception
    • 这个需要怎么处理,学艺不精,哪位大神指点一下,感谢!
    13 条回复    2020-02-08 21:38:30 +08:00
    chenshun00
        1
    chenshun00  
       2020-02-08 11:38:45 +08:00
    用过几天的 mybatis-plus , 最后的感觉是多引入一个组件就多一个组件的麻烦, :) 增大了团队的负担. 而且团队没有人深入了解这个. 出了问题只能自己刷源码一点一点搞.
    whnoob
        2
    whnoob  
    OP
       2020-02-08 11:40:23 +08:00
    @chenshun00 也算是初期阶段,自己在折腾,不过遇见了这个问题,之前试过只用 mybatis,倒是无所谓,可以搞,不过用这个第三方之后,事务这个搞不太明白
    hantsy
        3
    hantsy  
       2020-02-08 11:43:51 +08:00
    JTA
    BBCCBB
        4
    BBCCBB  
       2020-02-08 11:44:49 +08:00
    @Transactional 里指定要用到的那个事务管理器
    whnoob
        5
    whnoob  
    OP
       2020-02-08 11:51:25 +08:00
    @hantsy 我试试
    whnoob
        6
    whnoob  
    OP
       2020-02-08 11:52:27 +08:00
    @BBCCBB 额,试过了,只不过 mybatis plus 基类里面加了这个注解,没有指定哪个注解配置,所以找的时候多个找不到
    BBCCBB
        7
    BBCCBB  
       2020-02-08 12:04:43 +08:00
    在方法上加 @Transactional 注解, 然后指定, 覆盖掉类上的 @Transactional 注解.
    whnoob
        8
    whnoob  
    OP
       2020-02-08 12:56:28 +08:00
    @BBCCBB mybatis plus 就是在方法层面指定的,如果要自己覆盖的话,用原生的感觉还好一点
    guisheng
        9
    guisheng  
       2020-02-08 13:13:07 +08:00 via iPhone
    我有 4 个数据源 一个数据源一个配置文件.java 然后为每个数据源 指定一个方法 然后使用 @transactional 注解有个 ref 还是 manager 的参数
    whnoob
        10
    whnoob  
    OP
       2020-02-08 13:29:53 +08:00
    @guisheng 也是用的 mybatis plus 吗?是在继承 ServiceImpl 的类上加的 @transactional
    guisheng
        11
    guisheng  
       2020-02-08 14:31:31 +08:00 via iPhone
    @whnoob 是的,我不喜欢在类上加 当然也可以加到类上
    whnoob
        12
    whnoob  
    OP
       2020-02-08 15:07:01 +08:00
    @guisheng 试过了,自己写的方法加上 @transactional 是可以数据源不同生效事务,不过对于 mybatis plus 自己的 ServiceImpl 里面的方法,就不知道怎么处理了
    whnoob
        13
    whnoob  
    OP
       2020-02-08 21:38:30 +08:00
    换了个别的方式,用类似 IService 方式自定义了接口,按照业务逻辑做了一些常见的公共 Ctrl 层方法,暂时解决了这个问题,等待大佬看能不能有这个相似技术选型的解决方式
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2168 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:26 · PVG 09:26 · LAX 17:26 · JFK 20:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.