Mybatis 呼叫SqlServer 和 Oracle的儲存過程例項
阿新 • • 發佈:2019-01-10
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());
給對應的輸入引數傳值,呼叫儲存過程,接收結果集即可。