学习@Transactional注解时,自定义一个异常
@Transactional(rollbackFor = Exception.class) //将所有异常加入事务管理
@Override
public void delete(Integer id) {
deptMapper.deleteById(id);
int a = 1/0;//自定义的一个数学运算异常
empMapper.deleteByDeptId(id);
}
结果在运行后操作,发现只有IDEA中的日志显示Initiating transaction rollback。
但是查看相应的数据库文件时发现,数据库中的文件没有回滚操作,还是正常执行了SQL语句。
最后发现是由于MySQL数据库中表的引擎(Engine)设置成了MyISAM模式,于是将模式改为InnoDB模式解决问题了。
原因是InnoDB支持事务的操作,MyISAM模式不支持事务的操作。
================================================================