Mybatis与Hibernate共存项目调用存储过程

项目中同时使用Hibernate(用于权限的基础框架)+Mybatis(业务开发),最近用到Mybatis调用存储过程,这下问题可来了。

开始在junit里面测试,不行,一直有一个空指针。哭

junit的配置类

package com.rixing;

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

/**
 * User: renjunjie
 * Date: 13-7-9 上午10:24
 * Function:
 */
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners( { DependencyInjectionTestExecutionListener.class })
@ContextConfiguration(locations={"classpath:spring-test.xml","classpath:spring-data-test.xml"})
@TransactionConfiguration(transactionManager="transactionManager",defaultRollback=true)
public class SpringTest extends AbstractTransactionalJUnit4SpringContextTests {
}

 这是一个带有事务控制的测试基类。经过仔细查看发现了错误代码里面有hibernate的内容,奇怪了,用mybatis怎么会用到hibernate呢。想到配置事务的时候是用HibernateTransactionManager统一管理的,难道是这个问题。更改测试基类

@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners( { DependencyInjectionTestExecutionListener.class })
@ContextConfiguration(locations={"classpath:spring-test.xml","classpath:spring-data.xml"})
public class OracleFunTest {

 直接运行,通过了。

然后在程序里面测试,发现还是有问题,问题在aop配置的事务。改正不需要事务控制的全部

 <tx:method name="*" propagation="NEVER" />

 这下可以了。

 

 

mybatis调用oracle带结果集的存储过程的方法,仔细查看mybatis的手册,发现oracle的结果集必须是自定义的resultMap。

http://hillfallshore.iteye.com/blog/1462355

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值