• 非分布式-多线程事务控制核心代码1


    文件在D:\E\学习文档子目录压缩\数据库\事务\事务--非分布式事务\多线程事务控制    


    id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        name="dataSource" ref="dataSourceProxy" />

    @Autowired
    @Qualifier("transactionManager")
    private DataSourceTransactionManager transactionManager;

    @Override
    @Transactional(rollbackFor={Exception.class})
    public String ss(List list) {
           }
        updateBatchById(list);
        addLog(list, "release");

    // 发布时同步发布的数据到另一个系统的数据库,上面哪个Transactional没办法管到线程中的事务,因为线程会重新建立一个数据库连接
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                logger.info("发布时同步发布的数据到另一个系统的数据库-开始");
                DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
                definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

    //开启事务
                TransactionStatus status = transactionManager.getTransaction(definition);
                List<CC> ccList= cMapper.selectBatchIds(ids);
                List<DD> ddList = dMapper.selectDataByHd(ids);
                List<EE> eeList = eMapper.selectDataByHd(ids);
                try {
                    Lists.partition(ccList, 500).forEach(ccs -> cocSaMapper.insertReleaseHd(ccs ));
                    Lists.partition(ddList , 500).forEach(dds -> cocSaMapper.insertReleaseFltInfo(dds ));
                    Lists.partition(eeList , 500).forEach(ees -> cocSaMapper.insertReleaseDt(ees ));

    //提交事务
                    transactionManager.commit(status);
                    logger.info("发布时同步发布的数据到另一个系统的数据库-结束");
                } catch (Exception e) {
                    logger.error("发布时同步发布的数据到另一个系统的数据库-失败", e);
                    transactionManager.rollback(status);

                    logger.error("ccList=",ccList);
                    logger.error("ddList=", ddList);
                    logger.error("eeList=", eeList);
                }
            }
        });
        thread.start();
        return null;
    }

  • 相关阅读:
    【LaTex】LaTex的下载与安装(超详细、超简洁)
    基于STM32设计的智能水产养殖系统(华为云IOT)
    浙江大学机器学习(胡浩基)学习笔记二:人工神经网络、深度学习
    第十九周进度(了解物联网基础知识)
    WPF 02
    Linux命令
    OpenAI 宣布, ChatGPT 网页端无需注册就能立即使用(2024年4月1日)
    CJSON工具类
    数据仓库工具箱-第三章-零售业务
    深度学习(PyTorch)——循环神经网络(RNN)进阶篇
  • 原文地址:https://blog.csdn.net/xiangshuai198807/article/details/126353280