kwenpp 2016-02-03 03:20 采纳率: 0%
浏览 5201

Mybatis调用存储过程返回多个结果集

存储过程返回两个结果集(游标)。

 CREATE OR REPLACE FUNCTION t_user_func(id varchar(20))
  RETURNS SETOF refcursor AS
$BODY$
Declare
code refcursor;
result refcursor;
BEGIN     
  --返回错误码
  OPEN code FOR select 1010 as code;
  RETURN NEXT code;
  --返回查询结果集
  OPEN result FOR EXECUTE 'select * from t_user where user_id =''' ||id||'''' ;
  RETURN NEXT result;
  RETURN;
End;
$BODY$
  LANGUAGE plpgsql VOLATILE;

Mybatis映射文件是这样写的:

<select id="getUserByID" parameterType="map" statementType="CALLABLE">
    {call t_user_func(
    #{id,jdbcType=INTEGER,mode=IN},
    #{refcursor, mode=OUT,
    jdbcType=OTHER, javaType=ResultSet, resultMap=userResultMap}
    )
    }
</select>

<resultMap id="userResultMap" type="com.cet.ngp.model.UserStruct">
    <collection property="codes" ofType="com.cet.ngp.model.ResultCode">
        <id column="code" property="code" jdbcType="INTEGER" />
    </collection>
    <collection property="users" ofType="com.cet.ngp.model.User">
        <id column="user_id" property="userId" jdbcType="VARCHAR" />
        <result column="user_name" property="userName" jdbcType="VARCHAR" />
        <result column="user_birthday" property="userBirthday"
            jdbcType="DATE" />
        <result column="user_salary" property="userSalary" jdbcType="INTEGER" />
    </collection>
</resultMap>

只能获取到,code结果集,无法获取user结果集。
要怎么改,才能获取到user结果集。

  • 写回答

2条回答

  • RS_zhengjie 2017-07-25 03:32
    关注

    <?php
    $a = 89;
    ?>

    
    
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?