提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

记录开发过程的碰到的问题:
SpringBoot @transaction事务 for循环中的单独回滚某个循环,不影响前后循环数据操作


提示:以下是本篇文章正文内容,下面案例可供参考

一、业务场景

业务要求循环对业务数据进行保存(更新),每个循环涉及多个表的操作,当某次循环报错时,回滚本次循环操作,不影响前面循环已保存(更新)的数据,也不影响后续循环的执行。

二、一种解决方式

通过设置回滚点的方式

public class Test{

    @Transactional(rollbackFor = Exception.class)
    public void method1() {

        for (Object buyplanDataDTO : list) {
            //设置回滚点
            Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
            try {
               this.method2();
            } catch (Exception e) {
                //回滚当前事务
                TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);

            }
        }


    }

    
    public void method2() {
        
        
    }



}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐