1、當方法上沒有加 @Transactional ,此時執行刪除操作,在刪除操作後出現了異常,此刻刪除操作是不會回滾的。
public void deleteEmpById(Integer empNo){
EmpExample empExample = new EmpExample();
EmpExample.Criteria criteria = empExample.createCriteria();
criteria.andEmpnoEqualTo(empNo);
empMapper.deleteByExample(empExample);
//此處出現了異常
int a = 1/0;
}
2、當方法上帶有 @Transactional,如果執行刪除操作,在刪除操作後出現了異常,此刻刪除操作回滾。
3、當方法上帶有 @Transactional,如果執行刪除操作,在刪除操作後出現了異常,但是你try-catch 處理了這個異常,並未拋出異常,此刻刪除操作不會回滾。 可以使用 throw new RuntimeException("出錯了"); 讓刪除回滾。
@Transactional
public void deleteEmpById(Integer empNo){
EmpExample empExample = new EmpExample();
EmpExample.Criteria criteria = empExample.createCriteria();
criteria.andEmpnoEqualTo(empNo);
empMapper.deleteByExample(empExample);
try {
int a = 1/0;
}catch (Exception e){
}
}
4、@Transactional 註解應該只被應用到 public 方法上,這是由 Spring AOP 的本質決定的。如果你在 protected、private 或者默認可見性的方法上使用 @Transactional 註解,這將被忽略,也不會拋出任何異常。