赞
踩
MyBatis 中支持 Spring 事务和 MyBatis 自身的事务两种方式,下面分别介绍这两种事务的使用方法。
Spring 是一个非常流行的 Java 开发框架,它也提供了对于事务的支持。在 Spring 中,我们可以使用 @Transactional 注解来声明一个事务,从而实现对于数据库操作的事务管理。具体使用方法如下:首先,在 Spring 配置文件中开启事务管理器:
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource"/>
- </bean>
-
- <tx:annotation-driven transaction-manager="transactionManager"/>
然后,在 Dao 层中使用 @Transactional 注解声明事务:
- @Service
- public class UserServiceImpl implements UserService {
- @Autowired
- private UserMapper userMapper;
-
- @Override
- @Transactional
- public void updateUser(User user) {
- userMapper.update(user);
- }
- }
在上述代码中,我们使用了 @Transactional 注解声明了一个事务,当调用 updateUser() 方法时,会创建一个事务,并将 userMapper.update(user) 方法包含其中。如果 userMapper.update(user) 方法执行失败,会回滚事务,如果执行成功,则提交事务。
首先,在 MyBatis 配置文件中配置事务管理器:
<transactionManager type="JDBC" />
然后,在 Dao 层中使用 SqlSession 提供的事务管理方法:
- public interface UserMapper {
- void updateUser(User user);
- }
-
- SqlSession sqlSession = sqlSessionFactory.openSession();
- try {
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- userMapper.updateUser(user);
- sqlSession.commit();
- } catch (Exception e) {
- sqlSession.rollback();
- throw e;
- } finally {
- sqlSession.close();
- }
在上述代码中,我们通过 SqlSession 的 getMapper() 方法获取到 UserMapper 接口的实现对象,并调用其提供的 updateUser() 方法。当执行成功时,我们使用 sqlSession.commit() 提交事务;如果执行失败,则使用 sqlSession.rollback() 回滚事务。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。