mybatis non transactional SqlSession的解决

这个问题有两种解决方案:

第一种:
通过给方法加上@Transactional注解并且给配置中加入事务扫描

<tx:annotation-driven transaction-manager="transactionManager"/>

第二种:
通过配置来实现事务的同步

  <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
    <tx:attributes>
      <tx:method name="delete*" propagation="REQUIRED"  read-only="false" 
                            rollback-for="Exception" no-rollback-for="RuntimeException"/>
      <tx:method name="insert*" propagation="REQUIRED" read-only="false" 
                            rollback-for="java.lang.RuntimeException"  />
      <tx:method name="update*" propagation="REQUIRED" read-only="false" 
                            rollback-for="java.lang.Exception" />
      <tx:method name="select*" propagation="SUPPORTS"/>
      <tx:method name="save*"  propagation="REQUIRED" read-only="false" rollback-for="Exception" />
      <tx:method name="remove*"  propagation="REQUIRED" read-only="false" rollback-for="Exception" />
      <tx:method name="add*"  propagation="REQUIRED" read-only="false" rollback-for="Exception" />
      <tx:method name="up*"  propagation="REQUIRED" read-only="false" rollback-for="Exception" />
    </tx:attributes>
    </tx:advice>
    <!-- 扫描需要配置的类 -->
    <aop:config>
        <aop:advisor advice-ref="transactionAdvice" pointcut="execution(* com.ha.service.*.*(..))"/>
    </aop:config>

猜你喜欢

转载自blog.csdn.net/xiangbudao8/article/details/80254479