MyBatis调用存储过程,含有返回结果集、return参数和output参数 .

存储过程:

usebase_passport

go

createprocyhj_test

@input_aint,

@input_bint,

@output_cintout

as

begin

select*fromconfig.city;

set@output_c=@input_a*@input_b;

return@input_a+@input_b;

end

Mybats配置:

<resultMaptype="java.util.HashMap"id="resultMap">

<resultcolumn="city_key"property="cityKey"javaType="java.lang.Integer"jdbcType="INTEGER"/>

<resultcolumn="province_key"property="provinceKey"javaType="java.lang.Integer"jdbcType="INTEGER"/>

<resultcolumn="city_name"property="cityName"javaType="java.lang.String"jdbcType="VARCHAR"/>

</resultMap>

<selectid="testByProc"statementType="CALLABLE"parameterType="java.util.HashMap"resultMap="resultMap">

<![CDATA[

{#{d,mode=OUT,jdbcType=INTEGER}=call dbo.yhj_test(

#{a,mode=IN,jdbcType=INTEGER},

#{b,mode=IN,jdbcType=INTEGER},

#{c,mode=OUT,jdbcType=INTEGER}

)}

]]>

</select>

Java代码

Map<String, Object> paramMap =newHashMap<String, Object>();

paramMap.put("a", 2);

paramMap.put("b", 3);

List<City> citys = (List<City>) getTemplate().selectList(getNameSpaceAndMethod("testByProc"), paramMap);

returncitys;

通过以上代码我们即可获取对应的结果集,return参数和output参数。其中return参数和output参数放在传入的paramMap中,运行结果如下:

c是存储过程的output参数,而dreturn参数。

需要注意的事项:

1、存储过程的参数和名称无关,只和顺序有关系

2、存储过程的output参数,只能通过传入的map获取

3、存储过程返回的结果集可直接用返回的map接收

4、存储过程的return结果需要使用?=call procName(?,?)的第一个参数接收,需要指定对应的modeOUT类型

5、存储过程对应的数据类型为枚举类型,需要使用大写,如VARCHAR

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值