java的MybatisPlus調(diào)用儲(chǔ)存過程的返回?cái)?shù)據(jù)問題
1.調(diào)用存儲(chǔ)過程
核心 statementType=”CALLABLE”
- mybatis調(diào)用存儲(chǔ)過程時(shí)需要指定statementType=”CALLABLE”,
- 這樣Mybatis內(nèi)部中調(diào)用sql語句時(shí)將采用CallableStatementHandler,
- 而CallableStatementHandler內(nèi)部將使用CallableStatement來調(diào)用存儲(chǔ)過程。
如果存儲(chǔ)過程是有參數(shù)的,需要指定mode屬性,可選值有IN、OUT和INOUT。
當(dāng)mode為OUT或INOUT時(shí)必須同時(shí)指定jdbcType。
如下:
<select id="findName" statementType="CALLABLE" resultType="java.util.Map"> {call findName( #{name, mode=IN, jdbcType=VARCHAR}, #{email, mode=OUT, jdbcType=VARCHAR} )} </select>
或者
注意的問題:
每個(gè)#{}之間不能分行寫,因?yàn)榉g過來會(huì)有空格,會(huì)報(bào)錯(cuò)。
最好寫在一行吧,免得麻煩,就是不好看而已。
<!-- statementType 聲明指向的是什么類型,其中CALLABLE是執(zhí)行存儲(chǔ)過程和函數(shù)的 --> <select id="callProcedure" parameterType="map" statementType="CALLABLE"> {call PRO_GRAP(#{tabletag,mode=IN,jdbcType=VARCHAR},#{startdate,mode=IN,jdbcType=VARCHAR},#{enddate,mode=IN,jdbcType=VARCHAR})} </select>
2.測(cè)試調(diào)用
或者postman 請(qǐng)求,傳遞參數(shù)map
存儲(chǔ)過程調(diào)用完成后會(huì)把輸出參數(shù)賦值給入?yún)?,所以我們可以通過Map或?qū)嶓w類來接收輸出參數(shù),比如這里的name。
所以針對(duì)上述存儲(chǔ)過程調(diào)用,我們可以在Mapper接口中定義如下方法:
測(cè)試:
@Test public void callStatement() { Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "zxn"); try { userEmailMapper.findName(map); } catch (Exception e) { e.printStackTrace(); } System.out.println(“execute=”+map.get("email")); }
/** * 參數(shù)和結(jié)果都在params中 * @param params */ void findName(Map<String, Object> params);
3.存儲(chǔ)過程示例
DROP PROCEDURE IF EXISTS findName; //如果存儲(chǔ)過程存在,先刪除掉存儲(chǔ)過程 CREATE PROCEDURE findName(IN `name` varchar(200),OUT `email_address` varchar(255)), SELECT `a`.`email` INTO email from user a WHERE `a`.`name`=`name`; END
4.驗(yàn)證結(jié)果
輸出查詢出來的信息
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java 獲取Web項(xiàng)目相對(duì)webapp地址的實(shí)例
下面小編就為大家?guī)硪黄狫ava 獲取Web項(xiàng)目相對(duì)webapp地址的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11使用IntelliJ IDEA2020.2.2 x64 新建java項(xiàng)目并且輸出Hello World
這篇文章主要介紹了使用IntelliJ IDEA2020.2.2 x64 新建java項(xiàng)目并且輸出Hello World,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11關(guān)于兩個(gè)BeanUtils.copyProperties()的用法及區(qū)別
這篇文章主要介紹了關(guān)于兩個(gè)BeanUtils.copyProperties()的用法及區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06java實(shí)現(xiàn)電腦定時(shí)關(guān)機(jī)的方法
這篇文章主要介紹了java實(shí)現(xiàn)電腦定時(shí)關(guān)機(jī)的方法,首先通過java注冊(cè)windows服務(wù)程序,再以一個(gè)簡(jiǎn)單的java程序?qū)崿F(xiàn)定時(shí)關(guān)機(jī)的功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11java設(shè)計(jì)模式學(xué)習(xí)之代理模式
這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式學(xué)習(xí)之代理模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Springboot Maven打包跳過測(cè)試的五種方式小結(jié)
本文主要介紹了Springboot Maven打包跳過測(cè)試的五種方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Java Web開發(fā)之基于Session的購(gòu)物商店實(shí)現(xiàn)方法
這篇文章主要介紹了Java Web開發(fā)之基于Session的購(gòu)物商店實(shí)現(xiàn)方法,涉及Java針對(duì)session的操作及數(shù)據(jù)庫(kù)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10