学习笔记--事务管理

概念

具体使用操作

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

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)

相关推荐
子不语18029 分钟前
从0开始学习S7-1200+ET200SP(3)——两台S7-1200通过TCP连接
网络协议·学习·tcp/ip
llllliznc1 小时前
LLM 学习笔记 Day 5:Agent 核心组件——Planner、Memory 与 Reflection
笔记·学习
risc1234561 小时前
“解决了什么痛点”与“为什么有这个东西”的关系?
笔记
hj2862511 小时前
Docker 容器化技术标准化笔记
java·笔记·docker
hyhsandy18031 小时前
STM32F103 TIM学习笔记
笔记·stm32·学习
栈溢出了1 小时前
Redis 消息队列笔记:List 与 Pub/Sub
redis·笔记·list
GuHenryCheng2 小时前
【ESP32】ESP-IDF开发环境搭建(cursor)
git·stm32·单片机·学习
鹰影472 小时前
一款AI笔记助手和远程同步的markdown笔记idea-note
人工智能·笔记·rust·typescript·react
编程圈子3 小时前
电机驱动开发学习18. SVPWM空间矢量调制算法详解与实现
驱动开发·学习·算法
Kobebryant-Manba3 小时前
学习注意力的seq2seq
学习