学习笔记--事务管理

概念

具体使用操作

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

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)

相关推荐
The森1 分钟前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
tq10865 分钟前
Skills 的问题与解决方案
笔记
三水不滴14 分钟前
有 HTTP 了为什么还要有 RPC?
经验分享·笔记·网络协议·计算机网络·http·rpc
久邦科技24 分钟前
奈飞工厂中文官网入口,影视在线观看|打不开|电脑版下载
学习
三块可乐两块冰33 分钟前
【第二十九周】机器学习笔记三十
笔记
好好学习天天向上~~40 分钟前
6_Linux学习总结_自动化构建
linux·学习·自动化
听麟1 小时前
HarmonyOS 6.0+ 跨端智慧政务服务平台开发实战:多端协同办理与电子证照管理落地
笔记·华为·wpf·音视频·harmonyos·政务
非凡ghost2 小时前
PowerDirector安卓版(威力导演安卓版)
android·windows·学习·软件需求
risc1234562 小时前
认识一个事物,需要哪些基本能力与要素?
笔记
代码游侠2 小时前
C语言核心概念复习——C语言基础阶段
linux·开发语言·c++·学习