江苏省建设厅 标准化网站,艺术培训网站模板,网页模板图片高清,大航母网站建设在哪里文章目录1 事务1.1 需求1.2 原因分析1.3 错误解决1.4 yml配置文件中开启事务管理日志1 事务
1.1 需求 当部门解散了不仅需要把部门信息删除了#xff0c;还需要把该部门下的员工数据也删除了。可当在删除员工数据出现异常时#xff0c;就不会执行删除员工操作#xff0c;出…
文章目录1 事务1.1 需求1.2 原因分析1.3 错误解决1.4 yml配置文件中开启事务管理日志1 事务
1.1 需求 当部门解散了不仅需要把部门信息删除了还需要把该部门下的员工数据也删除了。可当在删除员工数据出现异常时就不会执行删除员工操作出现删除操作异常。 //根据部门id删除部门信息及部门下的所有员工Overridepublic void delete(Integer id){//根据部门id删除部门信息deptMapper.deleteById(id);//模拟异常发生int i 1/0;//删除部门下的所有员工信息empMapper.deleteByDeptId(id); }查看数据库 1.2 原因分析 先执行根据id删除部门的操作执行完毕数据库表 dept 中的数据就已经删除。执行 1/0 操作抛出异常抛出异常之前下面所有代码都不会执行根据部门ID删除该部门下的员工这个操作也不会执行。 联想之前数据库解决方法给删除操作加上事务用事务的一致性同成功失败思想解决。 1.3 错误解决
注解解释书写位置Transactional① 在当前方法执行开始之前开启事务执行完毕之后提交事务。在执行过程当中出现异常就会进行事务的回滚操作 ② 书写位置一般在业务层中控制事务在业务层当中一个业务功能可能会包含多个数据访问操作。① 方法当前方法交给spring进行事务管理 ② 类当前类中所有方法交由spring进行事务管理 ③ 接口接口下所有实现类中所有方法都交给spring 进行事务管理
Slf4j
Service
public class DeptServiceImpl implements DeptService {Autowiredprivate DeptMapper deptMapper;Autowiredprivate EmpMapper empMapper;OverrideTransactional //当前方法添加了事务管理public void delete(Integer id){//根据部门id删除部门信息deptMapper.deleteById(id);//模拟异常发生int i 1/0;//删除部门下的所有员工信息empMapper.deleteByDeptId(id); }
}测试验证删除过程中出现错误后spring进行了事务回滚操作数据库内数据删除失败 1.4 yml配置文件中开启事务管理日志
#spring事务管理日志
logging:level:org.springframework.jdbc.support.JdbcTransactionManager: debug