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);

參考

  原文:https://blog.csdn.net/elim168/article/details/78445755 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM