注解
@Transactional 事务开启
/**
* 根据id解散部门 部门下的员工也随之删除
* @param id
*/
// 这时候就要在Transactional中加入一个rollbackFor属性 表示所有的异常都会 回滚事务
/**
* 当无论删除部门的操作 成功还是失败都要 记录日志的时候 默认情况的Transactional是会传播到另一个方法 当前报错他就不会执行 会回滚
* 这时候就要加如 propagation属性 让他重新 new一个
*/
@Transactional(rollbackFor = Exception.class) // 开启事务
public void DelByEmpId(Integer id) throws Exception {
empMapper.delByEmpId(id); // 根据部门id先删除
int i = 1 / 0; // 这里会报错 如果没有开启事务的话就 只会执行一个 逻辑错误
if(true){
throw new Exception("出错了..."); // 如果是异常抛出 表示不是RuntimeException 而是 Exception 的类型 Transactional 就不会识别到
}
empMapper.delByEmpIdUser(id); // 根据部门id先删除员工
}
-
rollbackFor表示所有的异常都会回滚、
-
propagation 属性 Propagation.REQUIRES_NEW值 在原来的基础上重新事务管理