MyBatis框架中的事务处理

本文详细介绍了在MyBatis框架中如何处理事务,特别是在与Spring集成后,利用Spring的DataSourceTransactionManager进行事务管理。内容涵盖了从MyBatis单独使用时的SqlSession事务,到与Spring集成后的声明式事务管理,包括标准配置、容器管理事务、编程式事务管理和使用TransactionTemplate的方式。通过这些方法,MyBatis-Spring能够实现事务的透明管理,简化了在DAO和服务类中的事务处理代码。
摘要由CSDN通过智能技术生成

利用MyBatis框架的配置管理比直接使用JDBC API编写事务控制要来得更加轻松,这里我们就来详解Java的MyBatis框架中的事务处理,尤其是和Spring框架集成后更加exciting

1.MyBatis单独使用时,使用SqlSession来处理事务:

public class MyBatisTxTest {
   
 
  private static SqlSessionFactory sqlSessionFactory;
  private static Reader reader;
 
  @BeforeClass
  public static void setUpBeforeClass() throws Exception {
   
    try {
   
      reader = Resources.getResourceAsReader("Configuration.xml");
      sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    } finally {
   
      if (reader != null) {
   
        reader.close();
      }
    }
  }
   
  @Test
  public void updateUserTxTest() {
   
    SqlSession session = sqlSessionFactory.openSession(false); // 打开会话,事务开始
     
    try {
   
      IUserMapper mapper = session.getMapper(IUserMapper.class);
      User user = new User(9, "Test transaction");
      int affectedCount = mapper.updateUser(user); // 因后面的异常而未执行commit语句
      User user = new User(10, "Test transaction continuously");
      int affectedCount2 = mapper.updateUser(user2); // 因后面的异常而未执行commit语句
      int i = 2 / 0; // 触发运行时异常
      session.commit(); // 提交会话,即事务提交
    } finally {
   
      session.close(); // 关闭会话,释放资源
    }
  }
}

2.和Spring集成后,使用Spring的事务管理:
一个使用MyBatis-Spring的主要原因是它允许MyBatis参与到Spring事务管理中。而不是给MyBatis创建一个新的特定的事务管理器,MyBatis-Spring利用了存在于Spring中的DataSourceTransactionMan

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值