首页 > 代码库 > ibatis中如何调用存储过程

ibatis中如何调用存储过程

1)sqlmap.xml中的配置如下:

        需要注意的事项:

         a) parameterMap 中对应的属性property的值要和存储过程中的名字一样,并且对应的顺序要和存储过程中的顺序一致,

              否则可能无法获取对应的返回值;

     <!-- 调用packaget的存储过程的参数 -->

       <parameterMap id="proProductDzProcParam" class="java.util.Map">

<parameter property="p_dzno"  jdbcType="VARCHAR"  javaType="java.lang.String" mode="OUT" />

<parameter property="p_vchtype"  jdbcType="VARCHAR"  javaType="java.lang.String" mode="IN" />

<parameter property="p_productclass" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />

<parameter property="p_dptcode"  jdbcType="VARCHAR"  javaType="java.lang.String" mode="IN" />

       </parameterMap>

      <!-- 调用package的存储过程生成单证号-->

    <procedure id="proProductDzProc" parameterMap="proProductDzProcParam">

      <![CDATA[

{call proddata.product_dz_proc.pd_getdzno(?,?,?,?)}  //这里的{}不一定需要

]]>

        </procedure>


2)java中如何调用

   public String getProductDZNO(String pVchtype, String productclass, String pDptcode) throws DAOException {

try {

Map<String, String> paramMap = new HashMap<String, String>();

paramMap.put("p_vchtype", pVchtype);

paramMap.put("p_productclass", productclass);

paramMap.put("p_dptcode", pDptcode);

paramMap.put("p_dzno", null);

super._queryForObject("proProductDzProc", paramMap);

return paramMap.get("p_dzno");

} catch (Exception e) {

String error = "生成单证号出错";

LogUtil.error(e, this.getClass().getName(), "getProductDZNO", e.getMessage(), error);

throw new DAOException(error);

}

    }


ibatis中如何调用存储过程