事务:是一组操作的集合,它是一个不可分割的工作单位,要么同时成功,要么同时失败
操作:
- 开启事务:start transaction / begin;
- 提交事务:commit;
- 回滚事务:rollback;
案例: 删除部门,同时删除该部门下的所有员工
以下代码中:不加@Transactional注解 程序运行到 int I = 1/0 时
由于出现异常不会执行之后的代码
因此会出现只删除了部门 没有删除部门员工的情况
@Autowird
private DeptMapper deptmapper;
@Autowird
peivate EmpMapper empmapper;
@Transactional
public Result delete(Integer id){
deptmapper.delete(id);//删除部门
int i = 1/0;//此时出现RuntimeException异常
empmapper.delete(id);//删除该部门下的所有员工
}
添加@Transactional注解之后
deptmapper.delete(id); 和 empmapper.delete(id);就会形成一个事务
俩者会同时成功或失败 不存在只执行完成其中一个的结果
方法中出现异常 俩者都会执行失败 回滚事务
补充:
位置:
@Transactional注解可以在方法上\类上\接口上
作用:
将当前方法交给spring进行事务处理 方法执行前 开启事务; 成功执行后 提交事务; 出现异常 回滚事务
rollbackFor属性
//rollbackFor设置需要回滚的异常类型
@Transactional(rollbackFor={ServiceException,NullPointException})