MyBatis 提供了事务管理器来控制数据库事务。通过事务管理器,MyBatis 能够在执行数据库操作时,确保数据的一致性和完整性。MyBatis 支持两种事务管理方式:JDBC 事务管理Spring 事务管理

1. JDBC 事务管理

MyBatis 提供了 org.apache.ibatis.transaction.managed.ManagedTransactionFactory 类用于创建 JDBC 事务。使用 JDBC 事务管理时,你需要手动管理数据库连接和事务的提交或回滚。

TransactionFactory transactionFactory = new ManagedTransactionFactory();
DataSource dataSource = ... // 配置数据源
Transaction transaction = transactionFactory.newTransaction(dataSource);

主要步骤:

  • 获取数据库连接。
  • 开始事务。
  • 执行 SQL 操作。
  • 根据操作结果提交或回滚事务。

2. Spring 事务管理

在 Spring 环境中,MyBatis 支持使用 Spring 的事务管理机制,利用 org.apache.ibatis.transaction.spring.SpringManagedTransactionFactory 来与 Spring 的 DataSourceTransactionManager 配合。通过 Spring 的事务管理,可以简化事务的处理,Spring 会自动管理事务的开启、提交和回滚。

// Spring 配置示例
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
    SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
    factoryBean.setDataSource(dataSource());
    return factoryBean.getObject();
}

@Bean
public DataSourceTransactionManager transactionManager() {
    return new DataSourceTransactionManager(dataSource());
}

小结

  • JDBC 事务:需要手动管理事务,适用于独立应用。
  • Spring 事务:通过 Spring 管理事务,简化事务的控制,适用于 Spring 环境。

根据你的项目环境选择合适的事务管理方式。