Mybatis調用存儲過程

調用存儲過程

mybatis調用存儲過程時需要指定statementType=”CALLABLE”,這樣Mybatis內部中調用sql語句時將採用CallableStatementHandler,而CallableStatementHandler內部將使用CallableStatement來調用存儲過程。如果存儲過程是有參數的,需要指定mode屬性,可選值有IN、OUT和INOUT。當mode爲OUT或INOUT時必須同時指定jdbcType。示例如下:

<select id="findName" statementType="CALLABLE">
    {call findName(
        #{username, mode=IN},
        #{name, mode=OUT, jdbcType=VARCHAR}
    )}
</select>

存儲過程調用完成後會把輸出參數賦值給入參,所以我們可以通過Map或實體類來接收輸出參數,比如這裏的name。所以針對上述存儲過程調用,我們可以在Mapper接口中定義如下方法:

/**
 * 參數和結果都在params中
 * @param params
 */
void findName(Map<String, Object> params);

在上述示例中,Map類型的params參數中需要有key爲username的參數,調用完成後會把輸出參數name存入到params這個Map中。當然了我們也可以通過實體類來作爲入參的傳遞者和結果的接收者。示例如下:

/**
 * 參數和結果都包裝爲一個User對象
 * @param user
 */
void findName(User user);

本文是基於Oracle所寫,Elim寫於2017年11月4日。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章