您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“mybatis怎么調(diào)用mysql存儲過程并獲取返回值”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“mybatis怎么調(diào)用mysql存儲過程并獲取返回值”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
#結(jié)束符號默認;, delimiter $$語句表示結(jié)束符號變更為$$ delimiter $$ CREATE PROCEDURE `demo`(IN inStr VARCHAR(100), out ourStr VARCHAR(4000)) BEGIN SET ourStr = '01'; if (inStr == '02') then set ourStr = '02'; end if; END$$ #結(jié)束符號修改 delimiter ;
(1)注解方式
// key1和key2都是參數(shù)map中的key // key1是需要傳入存儲過程的值 // key2是用于接收存儲過程返回的值,跟獲取自增主鍵類似 @Select("call demo('${key1}', #{key2, mode=OUT, jdbcType=VARCHAR})") @Options(statementType = StatementType.CALLABLE) String getDemoValue(Map<String, Object> map);
(2)xml方式
<select id="getDemoValue" resultType="java.lang.String" parameterType="java.util.Map" statementType="CALLABLE"> call demo('${key1}', #{key2, mode=OUT, jdbcType=VARCHAR}) </select>
就簡單的一個存儲過程
BEGIN #SELECT COUNT(*) scount FROM test_user t WHERE t.user_sex=sex; SELECT user_name userName FROM test_user t WHERE t.user_sex=sex; END
然后在Mybatis Mapper配置文件中
<!--存儲過程 輸入?yún)?shù)用Map --> <select id="queryCountBySexWithProcedure" statementType="CALLABLE" parameterType="java.util.Map" resultType="java.util.HashMap"> { CALL queryCountBySexWithProcedure( #{sex,jdbcType=VARCHAR,mode=IN}, #{userName,jdbcType=VARCHAR,mode=OUT} ) } </select>
然后userName值null,這是為什么呢?在mapper.xml文件會做映射處理,而在存儲過程中下方標紅的屬性 user_name并不會自動映射到userName 值中,所以調(diào)用userName值一定返回null。
BEGIN #SELECT COUNT(*) scount FROM test_user t WHERE t.user_sex=sex; SELECT user_name userName FROM test_user t WHERE t.user_sex=sex; END
那怎么處理這樣問題呢?那就是加上INTO 關(guān)鍵字
BEGIN #SELECT COUNT(*) scount FROM test_user t WHERE t.user_sex=sex; SELECT user_name INTO userName FROM test_user t WHERE t.user_sex=sex; END
讀到這里,這篇“mybatis怎么調(diào)用mysql存儲過程并獲取返回值”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。