学习笔记--事务管理

概念

具体使用操作

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

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)

相关推荐
程序员大雄学编程3 小时前
「机器学习笔记14」集成学习全面解析:从Bagging到Boosting的Python实战指南
笔记·机器学习·集成学习
im_AMBER4 小时前
Web 开发 30
前端·笔记·后端·学习·web
试试勇气4 小时前
Linux学习笔记(八)--环境变量与进程地址空间
linux·笔记·学习
蒙奇D索大4 小时前
【数据结构】考研数据结构核心考点:平衡二叉树(AVL树)详解——平衡因子与4大旋转操作入门指南
数据结构·笔记·学习·考研·改行学it
andwhataboutit?5 小时前
Docker Compose学习
学习·docker·容器
郭庆汝5 小时前
自然语言处理笔记
笔记·自然语言处理·easyui
二进制怪兽5 小时前
[笔记] 驱动开发:Virtual-Display-Driver编译过程
笔记
ouliten6 小时前
cuda编程笔记(28)-- cudaMemcpyPeer 与 P2P 访问机制
笔记·cuda
im_AMBER6 小时前
数据结构 04 栈和队列
数据结构·笔记·学习