bronzestar
2012-07-05 09:58
浏览 694
已采纳

mybatis 调用 mysql 存储过程 返回结果集

存储过程:

create procedure sp_uList(uname varchar(11))
begin
select * from t_user where username like concat('%',uname,'%')
end;

userMapper.xml:

<select id = "uList" statementType="CALLABLE">
{
call sp_uList(
#{uname,mode=IN,javaType=java.lang.String,jdbcType=VARCHAR},
#{users,mode=OUT,javaType=ResultSet,jdbcType=CURSOR,resultMap=UserMap}
)

}
</select>




执行时报错:  java.sql.sqlexception: parameter index of 2 is out of range(1,1)
意思大概就是参数越界,我也能想到是mysql中的存储过程的写法有问题,但查了很多资料,都解决不了。
有没有人能提供 mybatis 调用mysql 中存储过程返回结果集的例子?谢谢!



  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • iteye_878 2012-07-05 10:15
    已采纳

    procedure 写的不对,应该加一个参数,

    create procedure sp_uList(uname varchar(11), o_result out sys_refcursor)

    begin
    open o_result for
    select * from t_user where username like concat('%',uname,'%')

    end;

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • liuyinhuan0409 2012-07-05 10:25

    你的procedure都没有out参数的:
    [code="sql"]
    create procedure sp_uList(uname varchar(11), out_result out sys_refcursor) as
    begin
    open out_result for
    select * from t_user where username like concat('%', uname, '%');

    end;
    [/code]

    评论
    解决 无用
    打赏 举报
  • zfu3382548 2012-09-03 00:23

    如果是sqlserver。 select 标签 配置 requltMap

    去掉 #{users,mode=OUT,javaType=ResultSet,jdbcType=CURSOR,resultMap=UserMap}

    调用selectList也行

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题