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项目练习 - 通讯录系统,后端部分