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 中存储过程返回结果集的例子?谢谢!



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;

你的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]

如果是sqlserver。 select 标签 配置 requltMap

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

调用selectList也行