事务:是一组操作的集合,它是一个不可分割的工作单位,要么同时成功,要么同时失败
操作:
- 开启事务: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})
在Java应用中,@Transactional注解用于管理数据库事务。当不加此注解时,如果代码出现异常,会导致部分操作未执行。加了注解后,如发生异常,整个事务会被回滚,确保数据一致性。例如,删除部门及旗下员工的操作会作为一个事务,要么全部完成,要么都不执行。
5万+





