概念:
事务是一组操作的集合,它是不可分割的工作单位,这些操作要么同时成功,要么同时失败
操作:
开启事务(一组操作开始前,开启事务) : start transaction / begin ;
提交事务(这组操作全部成功后,提交事务) : commit ;
回滚事务(中间任何一个操作出现异常,回滚事务) : rollback ;
举例,实现解散部门的业务,即部门被删除的同时,该部门下的所有员工都被删除
只需要修改两个地方:
1. empMapper 新增接口根据部门id删除员工
@Delete("delete from emp where dept_id=#{DeptId}")public void deleteByDeptId(Integer DeptId);
2. deptService实现类的删除部门方法
@Transactional@Overridepublic void delete(Integer id){deptMapper.delete(id);empMapper.deleteByDeptId(id);return ;}
注解 @Transactional
位置:业务(Service)层的方法上、类上、接口上
作用:将当前方法交给spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常,回滚事务
放在方法前,表示当前方法交给spring进行事务管理,
放在类前,表示当前类的所有方法都交给spring进行事务管理
放在接口前,表示实现这个接口的所有类中的所有方法都交给spring进行事务管理
属性:rollbackfor
默认情况下,只有出现RuntimeException才回滚异常。该属性用于控制出现何种异常类型,回滚事务。
属性:propagation -- 控制事务传播行为
事务传播行为:当一个事务方法被另一个事务方法调用是,这个事务犯法应该如何进行事务控制