当前位置:   article > 正文

09-mybatis 事务管理_mybatis 开启事务

mybatis 开启事务

MyBatis 中支持 Spring 事务和 MyBatis 自身的事务两种方式,下面分别介绍这两种事务的使用方法。

1.Spring 事务

Spring 是一个非常流行的 Java 开发框架,它也提供了对于事务的支持。在 Spring 中,我们可以使用 @Transactional 注解来声明一个事务,从而实现对于数据库操作的事务管理。具体使用方法如下:首先,在 Spring 配置文件中开启事务管理器:

  1. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  2.   <property name="dataSource" ref="dataSource"/>
  3. </bean>
  4. <tx:annotation-driven transaction-manager="transactionManager"/>

然后,在 Dao 层中使用 @Transactional 注解声明事务:

  1. @Service
  2. public class UserServiceImpl implements UserService {
  3.   @Autowired
  4.   private UserMapper userMapper;
  5.   @Override
  6.   @Transactional
  7.   public void updateUser(User user) {
  8.     userMapper.update(user);
  9.   }
  10. }

在上述代码中,我们使用了 @Transactional 注解声明了一个事务,当调用 updateUser() 方法时,会创建一个事务,并将 userMapper.update(user) 方法包含其中。如果 userMapper.update(user) 方法执行失败,会回滚事务,如果执行成功,则提交事务。

2.MyBatis 自身事务

首先,在 MyBatis 配置文件中配置事务管理器:

<transactionManager type="JDBC" />

然后,在 Dao 层中使用 SqlSession 提供的事务管理方法:

  1. public interface UserMapper {
  2.   void updateUser(User user);
  3. }
  4. SqlSession sqlSession = sqlSessionFactory.openSession();
  5. try {
  6.   UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  7.   userMapper.updateUser(user);
  8.   sqlSession.commit();
  9. } catch (Exception e) {
  10.   sqlSession.rollback();
  11.   throw e;
  12. } finally {
  13.   sqlSession.close();
  14. }

在上述代码中,我们通过 SqlSession 的 getMapper() 方法获取到 UserMapper 接口的实现对象,并调用其提供的 updateUser() 方法。当执行成功时,我们使用 sqlSession.commit() 提交事务;如果执行失败,则使用 sqlSession.rollback() 回滚事务。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/707754
推荐阅读
相关标签
  

闽ICP备14008679号