mybatis在spring(Controller) 中的事务配置问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis在spring(Controller) 中的事务配置问题相关的知识,希望对你有一定的参考价值。

这两天一直在折腾一个小工具,非常简单的移动端webapp。

用的是jquery mobile + ssm。

写的差不多的时候,想到解决事务问题,本来以为非常简单,只要在配置文件中加上相应的mybatis在spring中注解配置即可。

配置是这样的。

 

 <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="txManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <tx:annotation-driven transaction-manager="txManager" proxy-target-class="true" />

 

后来发现一直未生效,在调用mapper进行数据库增删查时,一直显示:

org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [[email protected]]

证明取得的SqlSession一直是无事务处理的,后来又试了在捕获异常后,重新再抛出异常等方法,均不生效。

仔细考虑,应该还是配置文件的问题,

之前这段事务管理器的配置一直都是放在spring-mybatis.xml中的,再试了一下放在spring-servlet.xml中。重启后,再试,居然生效了,显示日志如下:

org.mybatis.spring.SqlSessionUtils - Releasing transactional SqlSession [[email protected]]
...
org.springframework.jdbc.datasource.DataSourceTransactionManager - Initiating transaction rollback

看来还是加载配置的顺序问题,又得到一个经验。

看来spring的配置是很大的学问。

 

以上是关于mybatis在spring(Controller) 中的事务配置问题的主要内容,如果未能解决你的问题,请参考以下文章

事务:事务配置的规律-Spring MVC+ mybatis 环境

spring-mybatis项目练习 - 通讯录系统,后端部分

ssm(spring,spring mvc,mybatis)框架

spring boot+mybatis+mysql

Spring Boot入门——集成Mybatis

spring boot包扫描不到controller层