mybatic与spring结合的事务管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatic与spring结合的事务管理相关的知识,希望对你有一定的参考价值。

原文地址:http://czj4451.iteye.com/blog/2037759

 

mybatis与spring结合后,事务管理更加方便,这里介绍使用transactionnal的方式,有错的的地方,希望大家指出。

1. 和Spring集成后,使用Spring的事务管理: 

a. @Transactional方式: 

在类路径下创建beans-da-tx.xml文件,在beans-da.xml(系列五)的基础上加入事务配置: 

Xml代码  技术分享
  1. <!-- 配置事务管理器,注意这里的dataSource和SqlSessionFactoryBean的dataSource要一致,不然事务就没有作用了 -->
    <bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
    </bean>

  2.  

    <tx:annotation-driven transaction-manager="transactionManager" /><!-- 事务注解驱动,标注@Transactional的类和方法将具有事务性 --> 



服务类: 

Java代码  技术分享
    1. @Service("userService")  
    2. public class UserService {  
    3.   
    4.     @Autowired  
    5.     IUserMapper mapper;  
    6.   
    7.     public int batchUpdateUsersWhenException() { // 非事务性  
    8.         User user = new User(9, "Before exception");  
    9.         int affectedCount = mapper.updateUser(user); // 执行成功  
    10.         User user2 = new User(10, "After exception");  
    11.         int i = 1 / 0; // 抛出运行时异常  
    12.         int affectedCount2 = mapper.updateUser(user2); // 未执行  
    13.         if (affectedCount == 1 && affectedCount2 == 1) {  
    14.             return 1;  
    15.         }  
    16.         return 0;  
    17.     }  
    18.   
    19.     @Transactional  
    20.     public int txUpdateUsersWhenException() { // 事务性  
    21.         User user = new User(9, "Before exception");  
    22.         int affectedCount = mapper.updateUser(user); // 因后面的异常而回滚  
    23.         User user2 = new User(10, "After exception");  
    24.         int i = 1 / 0; // 抛出运行时异常,事务回滚  
    25.         int affectedCount2 = mapper.updateUser(user2); // 未执行  
    26.         if (affectedCount == 1 && affectedCount2 == 1) {  
    27.             return 1;  
    28.         }  
    29.         return 0;  
    30.     }  
    31. }  










以上是关于mybatic与spring结合的事务管理的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 声明式事务结合相关拦截器

Mysql事务结合spring管理

Spring中的事务与数据库中的锁关系

Spring嵌套事务原理

mybatic MapperScannerConfigurer的原理

推荐学java——Spring事务