SpringBoot事务回滚,使try中的sql会回滚,catch中的sql让它执行

DBC 1K 0

当我们调用一个接口,插入数据的时候,难免会产生异常,但是,我们需求想把异常记录下来,并且这个接口存在事务既然存在事务,那么会把所有的回滚了,存异常的sql就无法执行

简单测试一下

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

        //设置回滚点,只回滚以下异常
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        try {
            int i = 1 / 0;
            UserDO userDO = new UserDO();
            userDO.setName("我是回滚前");
            save(userDO);
        } catch (Exception e) {
            //手工回滚异常,回滚到savePoint
            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
            UserDO userDO = new UserDO();
            userDO.setName("我是回滚后");
            save(userDO);
        }
    }

结果如下

点击查看完整内容

执行日志

SpringBoot事务回滚,使try中的sql会回滚,catch中的sql让它执行插图

发起请求

SpringBoot事务回滚,使try中的sql会回滚,catch中的sql让它执行插图2

数据库效果

SpringBoot事务回滚,使try中的sql会回滚,catch中的sql让它执行插图4

发表评论 取消回复
表情 图片 链接 代码

分享