mybatis spring 整合 junit测试。 事务不起作用,不提交。删除无效???

问题描述

mybatis spring 整合 junit测试。 事务不起作用,不提交。删除无效???

applicationContext.xml 中的数据库和 sessionFactory以及事务配置
Xml代码

<bean id="bssDataSource"  class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <!-- Connection Info -->
    <property name="driverClassName" value="${bss.jdbc.driver}" />
    <property name="url" value="${bss.jdbc.url}" />
    <property name="username" value="${bss.jdbc.username}" />
    <property name="password" value="${bss.jdbc.password}" />  

    <!-- Connection Pooling Info -->
    <property name="maxActive" value="${bss.dbcp.maxActive}" />
    <property name="maxIdle" value="${bss.dbcp.maxIdle}" />
    <property name="defaultAutoCommit" value="false" />
    <!-- 连接Idle一个小时后超时 -->
    <property name="timeBetweenEvictionRunsMillis" value="3600000" />
    <property name="minEvictableIdleTimeMillis" value="3600000" />
    <property name="testOnBorrow" value="true" />
    <property name="testWhileIdle" value="true" />
    <property name="validationQuery" value="${bss.dbcp.validationQuery}" />
</bean>  

<!-- MyBatis配置 -->
<bean id="bssSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="bssDataSource" />
    <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 别名 -->
    <property name="typeAliasesPackage" value="com.jxnc56.bss.entity" />
    <!-- 显式指定Mapper文件位置 -->
    <property name="mapperLocations" >
        <list>
        <value>
            classpath:config/mybatis/sqlmap/bss/**/*.xml
        </value>
        </list>
    </property>
</bean>  

<!-- 扫描basePackage下所有以@MyBatisRepository标识的 接口-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.jxnc56.bss" />
    <property name="annotationClass" value="com.jxnc56.bss.dao.MyBatisRepository"/>
</bean>  

<!-- 事务管理,@Transactional("tmBss") -->
<bean id="tmBss" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="bssDataSource"></property>
    <qualifier type="org.springframework.beans.factory.annotation.Qualifier" value="tmBss" />
</bean>  

<!-- 使用annotation定义数据库事务,这样可以在类或方法中直接使用@Transactional注解来声明事务 -->
<tx:annotation-driven transaction-manager="tmBss"  proxy-target-class="true" />

java TEST:
Java代码

@Transactional("tmBss")
public class ProductServiceTest extends SpringTransactionalTestCase {
    @Autowired
    private ProductDao pDao;  

    @Test
    public void deleteTest (){
        pDao.delete(4);
        Product product = new Product();
        product.setId(4);
        System.out.println("-------------------------------------------->"+Arrays.toString(pDao.select(product).toArray()));
    }
}

其中ProductDao 是被@MyBatisRepository标示的接口
log:
2013-06-07 09:40:57 107 - org.mybatis.spring.transaction.SpringManagedTransaction -915 [main] DEBUG org.mybatis.spring.transaction.SpringManagedTransaction - JDBC Connection [jdbc:mysql://localhost/nrcompany?useUnicode=true&characterEncoding=utf-8, UserName=root@localhost, MySQL-AB JDBC Driver] will be managed by Spring
2013-06-07 09:40:57 110 - com.jxnc56.bss.dao.ProductDao.delete -918 [main] DEBUG com.jxnc56.bss.dao.ProductDao.delete - ooo Using Connection [jdbc:mysql://localhost/nrcompany?useUnicode=true&characterEncoding=utf-8, UserName=root@localhost, MySQL-AB JDBC Driver]
2013-06-07 09:40:57 115 - com.jxnc56.bss.dao.ProductDao.delete -923 [main] DEBUG com.jxnc56.bss.dao.ProductDao.delete - ==> Preparing: delete from product where id=?
2013-06-07 09:40:57 140 - com.jxnc56.bss.dao.ProductDao.delete -948 [main] DEBUG com.jxnc56.bss.dao.ProductDao.delete - ==> Parameters: 4(Integer)
2013-06-07 09:40:57 142 - org.mybatis.spring.SqlSessionUtils -950 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3a9d95]
2013-06-07 09:40:57 142 - org.mybatis.spring.SqlSessionUtils -950 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3a9d95] from current transaction

解决方案

http://blog.csdn.net/will_awoke/article/details/12002705
其实真正的问题在于spring 和springmvc 分父子容器,ContextLoaderListener才会给@Service加上事务,而springmvc 只是生成普通的bean

时间: 2024-10-02 06:32:30

mybatis spring 整合 junit测试。 事务不起作用,不提交。删除无效???的相关文章

mybatis spring 整合 junit测试。 事务不起作用,不提交。插入无效???

问题描述 applicationContext.xml 中的数据库和 sessionFactory以及事务配置<bean id="bssDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><!-- Connection Info --><property name="driverClassNam

test-spring4+mybatis3整合 junit测试的问题

问题描述 spring4+mybatis3整合 junit测试的问题 applicationContext.xml <context:component-scan base-package=""com""/> <bean id=""propertyConfigurer"" class=""org.springframework.beans.factory.config.PropertyPl

mybatis +spring 整合时候出现了问题

问题描述 mybatis +spring 整合时候出现了问题 异常:java.lang.ClassNotFoundException: org.apache.ibatis.session.SqlSessionFactory at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) at org.apache.catalina.loader.WebappClassLoader.loa

spring 写junit测试时使用aop报错

问题描述 spring 写junit测试时使用aop报错 当我在我的配置文件中加上如下配置会包下面的错误,我不加时就不会出错这是为什么 <aop:config> <aop:pointcut id="interceptorPointCuts" expression="execution(* cn.qtt.service.*.*(..)) " /> <aop:pointcut id="interceptorPointCutsNew

spring/mybatis整合,junit测试报BeanCreationException

问题描述 昨天想整合下springmvc和mybatis,用junit写了个测试,测试过程中,mybatis的mapper无法注入,报BeanCreationException,相关信息大家看下,帮小弟解决下 1 错误堆栈信息    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.hft.dal.mapper.AccountMapperTest': Inject

spring 整合 junit

这两天做Web开发,发现通过Spring进行对象管理之后,做测试变得复杂了.因为所有的Bean都需要在applicationContext.xml中加载好,之后再通过@Resource去取得.如果每次都要整个业务流做的差不多了再去测试,这样效率很低,也很麻烦.如果单独去写一个测试用类,这样太繁琐了.于是想起Spring有一个测试框架,能够整合JUnit进行测试,于是便拿出来试试~ 注意 本人使用的 是spring 4.04 ,junit 使用4.4.使用高版本的junit会报错java.lang

java spring junit-java junit测试报错找不到自己定义的xml文件 跪求各位高手帮忙解决一下

问题描述 java junit测试报错找不到自己定义的xml文件 跪求各位高手帮忙解决一下 eclipse下junit测试时遇到如下错误,错误内容如下: at jp.co.dgic.eclipse.jdt.internal.junit.runner.DJUnitRunner.main(DJUnitRunner.java:49) caused by:org.springframework.beans.factory. BeanDefinitionStoreException:IoException

Spring整合MyBatis(Maven+MySQL)图文教程详解_java

一. 使用Maven创建一个Web项目 为了完成Spring4.x与MyBatis3.X的整合更加顺利,先回顾在Maven环境下创建Web项目并使用MyBatis3.X,第一.二点内容多数是回顾过去的内容 . 1.2.点击"File"->"New"->"Other"->输入"Maven",新建一个"Maven Project",如下图所示: 1.2.请勾选"Create a si

spring junit测试

利用spring的mock类进行单元测试: spring框架提供了大量测试的mock类,包括与jndi,porlet,web应用相关的mock类.尤其是web应用相关 的mock类,可以大大提高web组件测试的方便性. 打开spring的下载包的mock文件夹(路径...mock\org\springframework\mock\web),就发觉有如下几个 文件: MockHttpServletRequest:是HttpServletRequest接口的mock实现,用来模拟客户端的HTTP请求