MyBatis 提供了兩種事務管理方式:基于 JDBC 的事務管理和基于 MANAGED 的事務管理。對于這兩種事務管理方式,MyBatis 提供了以下幾種事務回滾策略:
默認回滾策略:
手動設置回滾策略:
標簽的
defaultRollback` 屬性來手動指定全局的默認回滾策略。例如:
注解方式設置回滾策略:
@Options
注解中設置 rollbackFor
屬性來指定特定異常類型導致事務回滾。例如:@Insert("INSERT INTO users (name, age) VALUES (#{name}, #{age})")
@Options(rollbackFor = Exception.class)
int insertUser(User user);
這將會使得在執行插入操作時,如果發生 java.lang.Exception
異常,事務將回滾。全局異常處理器:
org.apache.ibatis.executor.ErrorContext
接口來自定義全局的異常處理器,從而控制事務的回滾策略。例如:public class MyErrorContext implements ErrorContext {
// 實現接口中的方法
}
然后在 MyBatis 的 XML 配置文件中指定這個自定義的異常處理器:
總之,MyBatis 提供了多種方式來設置事務的回滾策略,你可以根據項目的需求選擇合適的方式來實現。