• 学习@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、不要想着转发几条锦鲤就比得过努力的别人。
    • 只有足够强大才有权利选择你想要的。
    • 如果你总是做自己擅长的事,那你将永远不会进步。
    • 你会好起来的,只是不是今天。
    • 要么出类拔萃,要么甘于平庸,不要一边自命不凡,一边不想努力。
    • 丧气话都是用来发泄,说给别人听的,表面泄气就好啦,内心一定要给自己偷偷鼓劲。
    • 在还可以放肆的年纪,要有坚定的、磊落的倔强,年少轻狂也好、特立独行也罢,不要畏惧。
  • 相关阅读:
    架构师的 36 项修炼第07讲:高性能系统架构设计
    【数据结构练习】树和二叉树的选择题精选集锦
    Cocos2d-x 3D渲染技术 (三)
    常用的软件架构设计模式
    fabic.js Quadratic Curve /可控制的曲线
    C语言文件操作
    Spring @PostMapping 能在 URL 中带有参数吗
    java学习集合二 Set集合 Map集合
    hadoop 报不是内部或外部命令的解决办法
    golang 解析oracle 数据文件头
  • 原文地址:https://blog.csdn.net/weixin_46146718/article/details/127889618