当前位置:首页 > 编程笔记 > 正文
已解决

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

来自网友在路上 11168116提问 提问时间:2023-11-22 21:03:08阅读次数: 116

最佳答案 问答题库1168位专家为你答疑解惑

方法一:接口+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) {....}

方法二:手动提交

 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;}
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"java 事务提交(批量处理数据,单个批次执行完成后直接提交事务)":http://eshow365.cn/6-41976-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!