0
  • 随着学习的加深,对于这个问题我有了个思路。

    思路1:

    jdbcTemplate操作的代码单独封装一个方法,加上事务

    mybatis操作单独封装一个方法,加上事务

    然后设置事务的传播行为,传播行为里面可以要求两个方法运行在同一个事务中


    思路2:

    jdbcTemplate 和 mybatis 都使用了同一个事务管理器DataSourceTransactionManager,理论上应该是可以做到同事务的,或许你可以从DataSourceTransactionManager上下手


    后来你怎么解决的这个问题?


    1314408005793603584  评论     打赏       ccTyL
    • CrTnil  回复 @ccTyL
      看我6.9的回答,对数据源事务动态代理数据源配置
      CrTnil 2022-09-26 02:59:37   回复 1365268693742907392
  • 简单的办法就是,用mybatis 替换掉jdbcTemplate。你jdbcTemplate无法也就是直接写sql拼参数,你大可把sql写到mybatis的 mapperXml中,这样就可以代替掉

    1314408005793603584  评论     打赏       ccTyL
    • CrTnil  回复 @ccTyL
      我知道这个,上面说了的,不难,但工作量比较大,因为涉及的sql比较多,并且涉及了的跨库查询
      CrTnil 2022-06-13 10:04:47   回复 1365268693742907392
  • 通过修改多数据源配置中默认的数据源为动态代理数据源TransactionAwareDataSourceProxy,并且将transactionManager使用的数据源也修改为代理数据源后问题修复。

    ps:目前看没什么问题,但没测试多数据源的情况下会不会有影响

    1365268693742907392  评论     打赏       CrTnil
    • ccTyL  回复 @CrTnil
      这种方式主要是解决 混合事务,还是多数据源 的问题
      ccTyL 2022-09-26 06:59:25   回复 1314408005793603584
    • CrTnil  回复 @ccTyL
      主要是混合事务难解决,多数据源只需要配置好绑定在一起就行,然后混合事务指定的数据源为多数据源
      CrTnil 2022-09-27 02:17:03   回复 1365268693742907392
    • ccTyL  回复 @CrTnil
      能不能细说下,或者给个示例代码
      ccTyL 2022-09-27 02:34:00   回复 1314408005793603584
    • ccTyL  回复 @CrTnil
      我这边是jpa和jdbcTemplate 混合使用了,事务管理器还不一样,但是放在同一个事务(service里面)方法里,好像还是能实现混合事务
      ccTyL 2022-09-27 02:35:18   回复 1314408005793603584
    • CrTnil  回复 @ccTyL
      事务本质是sql使用同一个数据库连接,可以去搜下AbstractRoutingDataSource,主要获取当前sql执行时的线程对象,然后将运行的与另一个做绑定,这边不同项目构造肯定是不一样的,具体可以去看看动态数据源切换,多数据源事务之类的文章,我当时也是一知半解,后面也没怎么关注过这边的东西了
      CrTnil 2022-09-27 05:26:13   回复 1365268693742907392
    • ccTyL  回复 @CrTnil
      你那边项目试试 https://www.sunofbeach.net/a/1574596789019873281 这个,是否可行
      ccTyL 2022-09-28 01:27:40   回复 1314408005793603584
  • 可以的,去搜一下相关的整合文章跟练一下,再改你的项目吧。

    1153952789488054272  评论     打赏       拉大锯
    • CrTnil  回复 @拉大锯
      看了几个,感觉都不是太好,而且在查询的时候会涉及到多数据源查询
      CrTnil 2022-06-09 02:19:04   回复 1365268693742907392
    • 拉大锯  回复 @CrTnil
      既然是挖的坑,你只好去天坑了。这也是你的工作内容之一。你不可能把事情干完了,然后没事做,天天摸鱼的。心怀感恩的心态,去填坑,填坑过程让你赚钱[捂脸]
      拉大锯 2022-06-09 03:18:04   回复 1153952789488054272
相关问题
废物点心 · MyBatis
2021-01-05 05:41 600 4
纠结轮 · JDBC / JPA / Mybatis
2022-03-28 09:43 160 2
资质平平 · Android
2025-02-20 09:14 92 100
尖沙咀-段坤 · 项目
2025-01-06 23:39 18 2
雅澤yaduo · 领券联盟
2025-01-03 20:39 37 50
呆瓜小董 · webview
2024-11-30 18:02 68 20
阿肥 · 鸿蒙next
2024-10-25 18:07 35 100
尖沙咀-段坤 · 安卓
2024-09-11 11:03 31 2
YanLQ · AOSP
2024-08-10 11:57 35 100
断点 · vue
2024-08-08 10:05 79 30