在 MyBatis 中實現 Spring 事務管理,需要遵循以下步驟:
確保你的項目中已經添加了 Spring 和 MyBatis 的相關依賴。在 Maven 項目的 pom.xml 文件中添加以下依賴:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
在 Spring 的配置文件(如 applicationContext.xml)中配置數據源,例如使用 HikariCP:
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
在 Spring 的配置文件中配置事務管理器,例如使用 DataSourceTransactionManager:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
在 Spring 的配置文件中添加 <tx:annotation-driven>
標簽,以開啟基于注解的事務管理:
<tx:annotation-driven transaction-manager="transactionManager" />
在你的 Service 層方法上添加 @Transactional
注解,以聲明該方法需要進行事務管理:
import org.springframework.transaction.annotation.Transactional;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
@Transactional
public void addUser(User user) {
userDao.insert(user);
// ...其他業務邏輯
}
}
現在,當你在 Service 層的方法上添加 @Transactional
注解時,Spring 會自動為該方法管理事務。如果方法執行過程中發生異常,事務將回滾;如果方法正常執行,事務將在方法結束時提交。