mybatis版本:3.4.4
存儲過程
1、mapper.xml文件中配置相關的sql語句。
<select id="callTest" statementType="CALLABLE" > { call hasResource( #{param1,mode=IN}, #{param2,mode=IN}, #{param3,mode=OUT,jdbcType=INTEGER} ) } </select>
注意:parameterMap已被舍棄,請直接在sql語句中定義傳參類型。
注意:OUT參數必須指定jdbcType
2、定義mapper接口中的方法
void callTest(Map<String, Object> params);
注意:如果存儲過程中有OUT參數,調用時的傳參只能是Map類型,調用結束后從Map中根據OUT參數的名稱獲取返回的數據。如果沒有OUT參數,可以使用@Param方式定義接口中的傳參。
注意:在Mysql中,定義OUT參數為游標類型,好像很復雜,沒找到相關資料。官網的存儲過程文檔特少,不知道是不是找錯地方了。
注意:如果存儲過程執行過程中有sql調用,可作為存儲過程的執行結果返回,同基本的select定義類似,增加resultMap或resultType參數,mapper接口增加返回參數類型。
函數
mapper.xml配置
<select id="callTest" resultType="int" > select functionTest(#{params1}, #{param2}) from dual; </select>
mapper接口中的方法為基本方法傳參和返回數據。