• java 事务提交(批量处理数据,单个批次执行完成后直接提交事务)


    方法一:接口+REQUIRES_NEW 实现单个事务提交

    方式1:
    for (TIrBuPBom buPBom : batchList) {
       // 查询待处理的批次数据
      List<TIrBuPBom> pBomList = pBomMapperBase.list(new LambdaQueryWrapper<TIrBuPBom>()
                            .eq(TIrBuPBom::getBatchNo, buPBom.getBatchNo())
                            .eq(TIrBuPBom::getCarTypeCode, buPBom.getCarTypeCode())
                            .eq(TIrBuPBom::getDealStatus, "0"));
    if (pBomList.size() == buPBom.getBatchSl()) {
    	// 通过接口+ @Transactional(propagation = Propagation.REQUIRES_NEW)实现,单个事务提交
     	itIrBuPBomBiz.dealBomBatch(buPBom, pBomList, plantListMap, wkShopListMap, userName, now, tenancyId);
    } else {
    	 break;
    }
    }
    
     @Transactional(propagation = Propagation.REQUIRES_NEW)
        public void dealBomBatch(TIrBuPBom buPBom, List<TIrBuPBom> pBomList, Map<String, List<Map<String, String>>> plantListMap, Map<String, List<Map<String, String>>> wkShopListMap, String userName, LocalDateTime now, String tenancyId) {
    
    ....}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    方法二:手动提交

     if (pBomList.size() == buPBom.getBatchSl()) {
                        // 手动提交事务
                        DefaultTransactionDefinition def = new DefaultTransactionDefinition();
                        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
                        def.setIsolationLevel(2);
                        TransactionStatus status = null;
                        try {
                            status = this.platformTransactionManager.getTransaction(def);
                        this.dealBomBatch(buPBom, pBomList, plantListMap, wkShopListMap, userName, now, tenancyId);
                            this.platformTransactionManager.commit(status);
                        } catch (Exception var18) {
                            this.platformTransactionManager.rollback(status);
                            throw new BusicenException(var18.toString());
                        }
    
                    } else {
                        break;
                    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    2.4 双链表
    音乐制作软件 Ableton Live 11 Suite mac中文版功能介绍
    【web-攻击用户】(9.5)同源策略:与浏览器扩展、HTML5、通过代理服务应用程序跨域
    FPGA实现AD采集
    Springboot毕设项目系部期末考务管理系统ftt6kjava+VUE+Mybatis+Maven+Mysql+sprnig)
    less和sass的区别[简洁易懂]
    【Java基础】面向对象进阶(二)
    【归并】Leetcode 排序数组
    Node.js详解
    小程序数据导出文件
  • 原文地址:https://blog.csdn.net/zh555888/article/details/134561542