mybatis调用oracle存储过程
存储过程:
create or replace PROCEDURE SP_YDD_HSSRHZ(
ad_date_b date,
ad_date_e date,
ai_mzzy number,
ai_tjfs number,
ai_forgid number,
as_frcode varchar2,
out_cur out his_cxtj.ref_cur) is
vd_begin date;
vd_end date;
v_frcode varchar2(6);
直接上代码;xml
<resultMap type="java.util.HashMap" id="cursorDeanMangeMap">
<result column="xmname" property="xmname"/>
<result column="fyhzgl" property="fyhzgl"/>
<result column="sl" property="sl"/>
<result column="je" property="je"/>
</resultMap>
<select id="findInfo" parameterType="java.util.HashMap" statementType="CALLABLE" resultMap="cursorDeanMangeMap">
{call SP_YDD_HSSRHZ(
#{begindate,mode=IN,jdbcType=DATE},
#{enddate,mode=IN,jdbcType=DATE},
#{mzzy,mode=IN,jdbcType=DECIMAL},
#{tjfs,mode=IN,jdbcType=DECIMAL},
#{forgid,mode=IN,jdbcType=INTEGER},
#{frcode,mode=IN,jdbcType=VARCHAR},
#{v_cursor,mode=OUT,jdbcType=CURSOR,resultMap=cursorDeanMangeMap} )}
</select>
dao层:
void findInfo(Map<String, Object> param);
service;(注:以map入参,调用存储过程,存储返回的的参数,直接返回在入参的map中)
public List<Map<String, Object>> findInfo(Map<String, Object> param) {
deanManagementDao.findInfo(param);
List<Map<String, Object>> list = (List<Map<String, Object>>) param.get("v_cursor");//取值
return list;
}
controller;
param.put("begindate", DateUtil.formatDate(ad_date_b, "yyyy-MM-dd"));
param.put("enddate", DateUtil.formatDate(ad_date_e, "yyyy-MM-dd"));
param.put("mzzy",BigDecimalUtil.numToDecimal(ai_mzzy));
param.put("tjfs", BigDecimalUtil.numToDecimal(ai_tjfs));
param.put("forgid", BigDecimalUtil.numToDecimal(ai_forgid));
param.put("frcode", as_frcode);
List<Map<String, Object>> list = deanManagementDubboService.findInfo(param);