学习笔记--事务管理

概念

具体使用操作

用于有多条数据库操作时,类似的前面新增员工的操作

Spring事务管理-控制事务

通常情况下给方法加这个注解

java 复制代码
    @Transactional
    @Override
    public void save(Emp emp) {
        //1.保存员工基本信息
        emp.setCreateTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        empMapper.insert(emp);

//        int i = 1/0;

        //2.保存员工工作经历
        List<EmpExpr> exprList = emp.getExprList();
        if(!CollectionUtils.isEmpty(exprList)){
            //遍历集合,为empId赋值
            exprList.forEach(empExpr -> {
                empExpr.setEmpId(emp.getId());
            });
            empExprMapper.insertBatch(exprList);
        }
    }

事务进阶--rollbackFor

原本的事务管理默认出现运行时异常RuntimeException才会出现回滚

在注解后面加上这个属性可以用于控制出现何种异常时回滚

java 复制代码
@Transactional(rollbackFor = Exception.class)
    @Override
    public void save(Emp emp) throws Exception {
        //1.保存员工基本信息
        emp.setCreateTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        empMapper.insert(emp);

        if(true) {
            throw new Exception("出错了");
        }

        //2.保存员工工作经历
        List<EmpExpr> exprList = emp.getExprList();
        if(!CollectionUtils.isEmpty(exprList)){
            //遍历集合,为empId赋值
            exprList.forEach(empExpr -> {
                empExpr.setEmpId(emp.getId());
            });
            empExprMapper.insertBatch(exprList);
        }
    }

事务进阶--propagation

四大特性

java 复制代码
@Service
public class EmpLogServiceImpl implements EmpLogService {

    @Autowired
    private EmpLogMapper empLogMapper;

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    @Override
    public void insertLog(EmpLog empLog) {
        empLogMapper.insert(empLog);
    }
}

四大特性利用新建事务,实现了无论有没有错误都会保存日志

四大特性(ACID)

相关推荐
牧羊人.3337 分钟前
自然语言处理基础 04|长短期记忆网络 LSTM
网络·人工智能·rnn·深度学习·学习·自然语言处理·lstm
外收内放38 分钟前
数据分析(数据排序)
python·学习·数据分析
AI小云1 小时前
零基础如何系统学习AI?2026年技术路径与培训选择深度分析
人工智能·学习
我命由我123451 小时前
准入类与水平类职业资格
笔记·学习·职场和发展·产品运营·求职招聘·职场发展·产品经理
He BianGu1 小时前
【笔记】在WPF中BitmapScalingMode的作用
笔记·wpf
ly_Enhs1 小时前
从无光照到 PBR:我的环境光照学习记录
学习·vulkan图形渲染c/c++
小李不想当小白1 小时前
USART串口数据包(STM32标准库学习笔记)
经验分享·笔记·stm32·单片机·嵌入式硬件·学习
xier_ran2 小时前
【infra之路】AI 编译器学习笔记(八):向量化——把小块变成 SIMD 指令
人工智能·笔记·学习
kmomo..2 小时前
Linux 驱动开发学习笔记:I2C 子系统从入门到实践
linux·驱动开发·学习
梦072 小时前
openclaw升级踩坑笔记
笔记