0 0

mybatis 调用存储过程,存储过程返回游标,要将游标映射到List里返回 5

如题:

    dao层需要改造。原先dao层的一个方法调用存储过程,并且
  
     “cs.registerOutParameter(8, OracleTypes.CURSOR);”
  
     返回的是游标类型,然后再对游标进行遍历进行List对象的填充:

    public List method(args ..){
  
     // 。。。存储过程的的调用。。

      rs = (ResultSet) cs.getObject(8);//返回游标

      //to do rs遍历 填充到List

    return list;
   }


现在需要用mybatis对存储过程进行调用,存储过程返回的是cursor,mybatis需要怎么做才能将cursor映射到List结果集去呢?
2011年12月28日 11:21

1个答案 按时间排序 按投票排序

0 0

改变一下你的mapper配置,mybatis  selectList方法就可以了吧
我的是sqlserver的,返回的 是直接select出的结果集。
oracle:
{call pro_fristCount(#{topnum,jdbcType=INTEGER,mode=IN},#{result,jdbcType="CURSOR",mode="out",javaType="java.sql.Result"})}改下应该可以了吧,你试试。

<resultMap type="sl.wasp.wvs.domain.VoteDeptRecords" id="records">
		<result property="deptId" column="deptId" jdbcType="NVARCHAR" javaType="String"/>
		<result property="deptName" column="deptName" jdbcType="NVARCHAR" javaType="String" />
		<result property="itemId" column="itemId" jdbcType="NVARCHAR" javaType="String"  />
		<result property="itemName" column="itemName" jdbcType="NVARCHAR" javaType="String" />
		<result property="ticketNum" column="ticketNum" jdbcType="INTEGER" javaType="Integer" />
		<result property="voteId" column="voteId" jdbcType="NVARCHAR" javaType="String" />
	</resultMap>
		

	
	<select id="selectDeptItemByTickets" statementType="CALLABLE" resultMap="records" parameterType="map">       
		 {call pro_fristCount(#{topnum,jdbcType=INTEGER,mode=IN})}
	</select>  

2012年9月03日 00:12

相关推荐

Global site tag (gtag.js) - Google Analytics