• 学习@Transaction异常自动回滚以及手动回滚和回滚部分SQL服务



    一、第一种注解回滚

    @Service
    public class TransactionServiceImpl implements TransactionService {
    
        @Autowired
        private OpProductService opProductService;
        
        @Override
        public void insertJoke() {
            OpProduct opProduct1 = new OpProduct(null, "sb1");
            opProductService.save(opProduct1);
            OpProduct opProduct2 = new OpProduct(null, "sb2");
            opProductService.save(opProduct2);
        }
    
        @Override
        @Transactional(rollbackFor = Exception.class)
        public void transTest() {
            try {
                insertJoke();
                this.insertJoke();
                int i = 1 / 0;
            } catch (Exception ex) {
                throw new RuntimeException("手动抛出异常:" + ex.getMessage());
            }
        }
        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    二、第二种手动回滚

    @Service
    public class TransactionServiceImpl implements TransactionService {
    
        @Autowired
        private OpProductService opProductService;
        
        @Override
        public void insertJoke() {
            OpProduct opProduct1 = new OpProduct(null, "sb1");
            opProductService.save(opProduct1);
            OpProduct opProduct2 = new OpProduct(null, "sb2");
            opProductService.save(opProduct2);
        }
        
        @Override
        @Transactional(rollbackFor = Exception.class)
        public void transTest3() {
            try {
                insertJoke();
                this.insertJoke();
                int i = 1 / 0;
            } catch (Exception ex) {
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    三、第三种部分回滚

    @Service
    public class TransactionServiceImpl implements TransactionService {
    
        @Autowired
        private OpProductService opProductService;
        
        @Override
        @Transactional(rollbackFor = Exception.class)
        public void transTest2() {
            OpProduct opProduct2 = new OpProduct(null, "sb1");
            opProductService.save(opProduct2);
            try {
                opProductService.saveRow("sb2");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    @Service
    @Slf4j
    @AllArgsConstructor
    public class OpProductServiceImpl extends MPJBaseServiceImpl<OpProductMapper, OpProduct> implements OpProductService {
      
        @Override
        @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
        public void saveRow(String type) {
            OpProduct opProduct1 = new OpProduct(null, type);
            this.save(opProduct1);
            throw new RuntimeException("手动抛出异常");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 你要记得你小时候曾被爸爸举过头顶,现在怎能轻易低头落泪求人不要走。
    • 多花时间进步,跳出你厌恶的圈子,摆脱你周围的傻子,这就是为什么努力的原因。
    • 日子总是有意思的,了无生趣的是,打不起精神的你。
    • 你不能一直做—件烂事然后又去后悔好像后悔有用一样。
    • 命运要你认清自己几斤几两的时候,不会提前打招呼。
    • 焦虑就是浪费你的时间,它不会改变任何事,只能搅乱你的脑袋,偷走你的快乐。
    • 飞机头等舱可以优先登机,银行VIP可以不用排队,看演唱会位置最好的票是最贵的,世界从不平等,你有多努力就有多特殊。
    • 你的努力里,藏着父母暮年的欢喜,孩子未来的底气。
    • 不努力的女人有两种结果:穿不完的地摊货和逛不完的菜市场。49、不要想着转发几条锦鲤就比得过努力的别人。
    • 只有足够强大才有权利选择你想要的。
    • 如果你总是做自己擅长的事,那你将永远不会进步。
    • 你会好起来的,只是不是今天。
    • 要么出类拔萃,要么甘于平庸,不要一边自命不凡,一边不想努力。
    • 丧气话都是用来发泄,说给别人听的,表面泄气就好啦,内心一定要给自己偷偷鼓劲。
    • 在还可以放肆的年纪,要有坚定的、磊落的倔强,年少轻狂也好、特立独行也罢,不要畏惧。
  • 相关阅读:
    基于51单片机出租车计费设计(proteus仿真+程序+原理图+设计说明书)
    算法通关村第八关|白银|二叉树的深度和高度问题【持续更新】
    图、图的遍历、最小生成树、最短路径
    Python做批处理,给安卓设备安装应用和传输图片
    steam搬砖项目详细拆解教程,steam搬砖长期稳定
    synchronized 与 spring事务 @Transactional 的介绍使用
    2015-04《信息资源管理 02378》真卷解析,逐题解析+背诵技巧
    C 和 C++ 可变参数介绍
    Spring MVC更多家族成员---框架内异常处理与HandlerExceptionResolver---09
    中断:PL硬中断,基地址,优先级。
  • 原文地址:https://blog.csdn.net/weixin_46146718/article/details/127889618