当前位置: 首页 > article >正文

mybatisplus手动获取数据源执行非主数据库事务

mybatisplus手动获取数据源执行非主数据库事务

class A {
    // 事务管理器
    @Resource
    private DataSourceTransactionManager dataSourceTransactionManager;

    @Autowired
    private DataSource dataSource; // 最终是com.baomidou.dynamic.datasource.DynamicRoutingDataSource类型

    public void add(MDTO dto) throws AppException {
        // 获取想要执行事务的数据源
        final DataSource testdb = ((DynamicRoutingDataSource) dataSource).getDataSource("testdb");
        dataSourceTransactionManager.setDataSource(testdb);

        DefaultTransactionDefinition transactionDefinition = new DefaultTransactionDefinition();
        // 新发起一个事务
        transactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);

        // 获得事务状态
        final TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);


        try {
            Map<String, Object> result = new HashMap<>();
            result.put("test1", 0);
            result.put("test2", 0);

            baseMapper.WAdd(result);

            // 提交所有事务
            dataSourceTransactionManager.commit(transactionStatus);
        } catch (Exception e) {
            // 回滚
            if (dataSourceTransactionManager != null) {
                dataSourceTransactionManager.rollback(transactionStatus);
            }
            e.printStackTrace();
            throw e;
        }
    }
}

http://www.kler.cn/a/163038.html

相关文章:

  • idea的mapper.xml文件里写sql语句出现Tag name expected错误提示
  • 【大数据技术基础 | 实验十】Hive实验:部署Hive
  • Qt 编写插件plugin,支持接口定义信号
  • 常见error集合
  • JavaScript——函数、事件与BOM对象
  • 【Xrdp联机Ubuntu20.04实用知识点补充】
  • sql行转列
  • java-两个列表进行比较,判断那些是需要新增的、删除的、和更新的
  • 线性回归与逻辑回归:深入解析机器学习的基石模型
  • LinuxBasicsForHackers笔记 -- 日志系统
  • AGM CPLD 应用指南
  • 《每天一个Linux命令》 -- (5)通过sshkey密钥登录服务器
  • Could not resolve all dependencies for configuration ‘:app:androidApis‘.
  • Amazon CodeWhisperer 开箱初体验
  • JAVA程序如何打jar和war问题解决
  • CentOS系统装机流程
  • 【场景测试用例】上传文件
  • 【数据开发】Hive 多表join中的条件过滤与指定分区
  • ReactNative性能优化实践
  • Azure云WAF服务的CRS规则和DRS规则区别
  • 大数据技术3:数据仓库的ETL和分层模型
  • vite配置nework访问ip
  • 电脑知识:关于电脑使用的误区
  • Linux查看openSSL版本
  • 24、文件上传漏洞——Apache文件解析漏洞
  • 【Python】 Python web开发库大全