1. 程式人生 > >Mybatis 呼叫SqlServer 和 Oracle的儲存過程例項

Mybatis 呼叫SqlServer 和 Oracle的儲存過程例項

1、建立好mybatis的Mapper檔案

在介面檔案中宣告好介面以及返回的引數型別

Map<String, Object> getGoodsInfo(Map<String,Object> paramterMap);

2、Mapper.xml檔案中的對應呼叫儲存過程的方式如下

<select id="getGoodsInfo" parameterMap="getGoodsInfoMap" statementType="CALLABLE" resultMap="goodInfoMap">
        <![CDATA[
        {call UCML_GET_INFO.GETGOODS_BY_GDIDMKT(?,?,?)}
        ]]>
</select>

2.1、對應的引數Map如下

<parameterMap type="java.util.HashMap" id="getGoodsInfoMap">
        <parameter property="I_Mkt" mode="IN" jdbcType="VARCHAR"/>
        <parameter property="I_GBID" mode="IN" jdbcType="VARCHAR"/>
        <parameter property="OUT_FLAG"  mode
="OUT" jdbcType="VARCHAR"/>
</parameterMap>

這裡特指出的是, 儲存過程的輸入和輸出引數都必須傳入,在對應的引數Map中 mode中用“IN”或“OUT”表明引數的型別

2.2、在具體的實現中呼叫

  Map<String, Object> paramterMap = new HashMap<>();
        paramterMap.put("I_Mkt", storeId);
        paramterMap.put("I_GBID", barcode);
        futureGoodsMapper.getGoodsInfo
(paramterMap);//呼叫儲存過程 //呼叫完成以後,儲存過程的結果集就會返回到對應的paramterMap中,用如下方式取出即可 result.setReturnFlag(paramterMap.get("OUT_FLAG").toString()); result.setReturemMsg(paramterMap.get("OUT_MSG").toString()); result.setName(paramterMap.get("OUT_GBCNAME").toString());

給對應的輸入引數傳值,呼叫儲存過程,接收結果集即可。