一、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);