Ibatis 调用Oracle返回Cursor的函数/过程

为了方便我们经常需要函数/过程返回结果集时采用返回cursor的方式得到结果集,在ibatis以前版本中支持的不是很好,
现在最新版本已经可以支持的很好了.
一.下载最新ibatis包.
二.最新的连接oracle 10g的驱动ojdbc(我这里用的是oracle 10g)
三.下载最新的common包.
示例如下:
函数定义:
CREATE   OR   REPLACE   FUNCTION  GetCurTest(
    param1        
in      varchar2 ;
    param2          
in      varchar2 ;
)
return  SYS_REFCURSOR
IS
    outCursor SYS_REFCURSOR; 
-- 输出的游标
BEGIN
    
open  outCursor  for
          
select  ORGANCODE  from  testTable  where  col1  =  GetCurTest.param1  and  col2  =  GetCurTest.param2;
        
return  outCursor;
END ;
 注意这里用的是SYS_REFCURSOR,在oracle10g里面提供的.
ibatis中调用如下:
< typeAlias  alias ="corp"  type ="com.wes.model.Corp"   />
< resultMap  id ="corp-map"  class ="corp" >
    
< result  property ="corpNo"  column ="ORGANCODE"   />
</ resultMap >
< parameterMap  id ="test"  class ="java.util.HashMap"   >  
    
< parameter  property ="result"  jdbcType ="ORACLECURSOR"  javaType ="java.sql.ResultSet"  mode ="OUT"  resultMap ="corp-map"   />
    
< parameter  property ="param1"  jdbcType ="VARCHAR"  javaType ="java.lang.String"  mode ="IN" />  
    
< parameter  property ="param2"  jdbcType ="Date"  javaType ="java.util.Date"  mode ="IN" />  
</ parameterMap >
< procedure  id ="testCur"  parameterMap ="test" >  
    {? = call GetCurTest(?, ?)} 
</ procedure >
java中调用如下:
 String resource  =   " SqlMapConfig.xml " ;
 SqlMapClient client 
=   null ;
 
try {
    Reader reader 
= Resources.getResourceAsReader(resource);
    client 
= SqlMapClientBuilder.buildSqlMapClient(reader);
    }
catch  (Throwable e) {}
Map p 
=   new  HashMap();
p.put(
" param1 " , " a " );
p.put(
" param2 " , " b " );
client.queryForObject(mapid, p);
List list 
=  (List) p.get( " result " );
if  (list  ==   null   ||  list.size()  ==   0 )
   list 
=   new  ArrayList();
return  list;
list存放的就是我们要的结果集.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值