一、procedure
Mybatis调用存储过程
如上图所示是procedure的参数,IN代表入参,OUT代表出参,IN OUT既可以作为入参又可以作为出参
(1)procedure的入参和出参可以封装为一个实体类,调用procedure后,出参自动赋值到实例中
<resultMap id="BaseResultMap" type="com.huarun.bjjghis.entity.ReserveTimeRegInfo">
<result property="wxOrderId" column="orderid" javaType="string" jdbcType="VARCHAR"></result>
<result property="tsStartTime" column="beginyysj" javaType="string" jdbcType="VARCHAR"></result>
<result property="tsEndTime" column="endyysj" javaType="string" jdbcType="VARCHAR"></result>
<result property="deptCode" column="l_ksdm" javaType="string" jdbcType="VARCHAR"></result>
<result property="drCode" column="l_ysdm" javaType="string" jdbcType="VARCHAR"></result>
<result property="timeSlice" column="l_zblb" javaType="int" jdbcType="INTEGER"></result>
<result property="registrationTime" column="l_ghsj" javaType="string" jdbcType="DATE"></result>
<result property="lockTime" column="l_shsj" javaType="string" jdbcType="DATE"></result>
<result property="status" column="Zt" javaType="string" jdbcType="VARCHAR"></result>
<result property="errorMsg" column="err" javaType="string" jdbcType="VARCHAR"></result>
<result property="hisRegNo" column="his_reg_no" javaType="string" jdbcType="VARCHAR"></result>
<result property="mdFlag" column="md_flag" javaType="int" jdbcType="INTEGER"></result>
</resultMap>
(2)procedure调用
<select id="reserveTimeRegInfo"
parameterType="com.huarun.bjjghis.entity.ReserveTimeRegInfo"
resultMap="BaseResultMap" statementType="CALLABLE">
{
call sp_sh(#{wxOrderId, mode=IN, jdbcType=VARCHAR},
#{tsStartTime, mode=IN, jdbcType=VARCHAR},
#{tsEndTime, mode=IN, jdbcType=VARCHAR},
#{deptCode, mode=IN, jdbcType=VARCHAR},
#{drCode, mode=IN, jdbcType=VARCHAR},
#{timeSlice, mode=IN, jdbcType=INTEGER},
to_date(#{registrationTime, mode=IN}, ‘yyyy-mm-dd hh24:mi:ss‘),
to_date(#{lockTime, mode=IN}, ‘yyyy-mm-dd hh24:mi:ss‘),
#{status, mode=OUT, jdbcType=VARCHAR},
#{errorMsg, mode=OUT, jdbcType=VARCHAR},
#{hisRegNo, mode=OUT, jdbcType=VARCHAR},
#{mdFlag, mode=OUT, jdbcType=INTEGER})
}
</select>
二、Function
<select id="getSchCount" parameterType="java.util.Map" statementType="CALLABLE">
{#{l_sl, mode=OUT, jdbcType=INTEGER} = call F_GETGHSYSL_wx(to_date(#{l_gzrq, mode=IN, jdbcType=DATE}, ‘YYYY-MM-DD‘),
#{l_ksdm, mode=IN, jdbcType=VARCHAR},
#{l_ysdm, mode=IN, jdbcType=VARCHAR},
#{l_yysj, mode=IN, jdbcType=VARCHAR},
#{l_jssj, mode=IN, jdbcType=VARCHAR},
#{l_zblb, mode=IN, jdbcType=INTEGER})
}
</select>
在service传入Map到Dao
parameterMap.put("l_gzrq", regDate);
parameterMap.put("l_ksdm", deptCode);
parameterMap.put("l_ysdm", drCode);
parameterMap.put("l_zblb", l_zblb);
parameterMap.put("l_yysj", null);
parameterMap.put("l_jssj", null);
parameterMap.put("l_sl", 0);
原文:https://www.cnblogs.com/qiaohan9090/p/13181576.html