欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis調(diào)用mysql存儲(chǔ)過(guò)程(返回參數(shù),單結(jié)果集,多結(jié)果集)

 更新時(shí)間:2022年01月17日 11:05:34   作者:阿瑟與非  
本文主要介紹了mybatis調(diào)用mysql存儲(chǔ)過(guò)程(返回參數(shù),單結(jié)果集,多結(jié)果集),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、接收一個(gè)返回值

使用Map接收返回參數(shù),output參數(shù)放在傳入的param中

創(chuàng)建表

DROP TABLE IF EXISTS `demo`;
CREATE TABLE `demo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;
 
-- ----------------------------
-- Records of demo
-- ----------------------------
INSERT INTO `demo` VALUES ('1', '測(cè)試');

創(chuàng)建存儲(chǔ)過(guò)程

DROP PROCEDURE IF EXISTS pro;
CREATE PROCEDURE pro (
	IN userId INT,
	OUT userCount INT
)
BEGIN
 
DECLARE user_name VARCHAR (64);
SELECT NAME FROM demo WHERE id = userId INTO user_name;
INSERT INTO demo (NAME) VALUES (user_name);
SELECT COUNT(*) FROM demo INTO userCount;
 
END;

mapper.xml

<select id="procedureTest" parameterMap="pm" statementType="CALLABLE">
        CALL pro(#{userId,mode=IN},#{userCount,mode=OUT,jdbcType=INTEGER});
    </select>
 
    <parameterMap id="pm" type="java.util.Map">
        <parameter property="userId" jdbcType="INTEGER" mode="IN"></parameter>
        <parameter property="userCount" jdbcType="INTEGER" mode="OUT"></parameter>
    </parameterMap>

service

@Override
    public void procedureTest() {
        Map<String, Object> param = new HashMap<>();
        param.put("userId", "1");
        demoMapper.procedureTest(param);
        System.out.println("輸出結(jié)果是:"+param.get("userCount"));
    }

輸出結(jié)果

參數(shù)名不一定和存儲(chǔ)過(guò)程一樣,只和傳參順有關(guān),使用下圖配置同樣可以獲取結(jié)果

System.out.println("輸出結(jié)果是:"+param.get("userCount_2"));

注意事項(xiàng):

1、  存儲(chǔ)過(guò)程的參數(shù)和名稱(chēng)無(wú)關(guān),只和順序有關(guān)系

2、  存儲(chǔ)過(guò)程的output參數(shù),只能通過(guò)傳入的map獲取

3、  存儲(chǔ)過(guò)程返回的結(jié)果集可直接用返回的map接收

4、  存儲(chǔ)過(guò)程的return結(jié)果需要使用?=call procName(?,?)的第一個(gè)參數(shù)接收,需要指定對(duì)應(yīng)的mode為OUT類(lèi)型

5、  存儲(chǔ)過(guò)程對(duì)應(yīng)的數(shù)據(jù)類(lèi)型為枚舉類(lèi)型,需要使用大寫(xiě),如VARCHAR

output是在存儲(chǔ)過(guò)程中的參數(shù)的返回值(輸出參數(shù)),而ReturnValue是存儲(chǔ)過(guò)程返回的值(使用return關(guān)鍵字),一個(gè)存儲(chǔ)過(guò)程可以有任意多個(gè)依靠參數(shù)返回的值,但只有一個(gè)ReturnValue。

存儲(chǔ)過(guò)程主要分成三類(lèi):

1、返回記錄集的存儲(chǔ)過(guò)程:執(zhí)行結(jié)果是一個(gè)記錄集,例如,從數(shù)據(jù)庫(kù)中檢索出符合某一個(gè)或幾個(gè)條件的記錄。

2、返回?cái)?shù)值得的存儲(chǔ)過(guò)程(也可稱(chēng)為標(biāo)量存儲(chǔ)過(guò)程),其執(zhí)行完后返回一個(gè)值,例如數(shù)據(jù)庫(kù)中執(zhí)行一個(gè)有返回值的函數(shù)或命令。

3、行為存儲(chǔ)過(guò)程,用來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的某個(gè)功能,而沒(méi)有返回值,例如在數(shù)據(jù)庫(kù)中的更新和刪除操作。

二、接收l(shuí)ist結(jié)果集

使用list接收

@Override
    public void procedureTest() {
        Map<String, Object> param = new HashMap<>();
        param.put("userId", "1");
        List<?> list = demoMapper.procedureTest(param);
        System.out.println("輸出結(jié)果是:" + param.get("userCount_2"));
        System.out.println("輸出集合:" + list.size());
    }
 <select id="procedureTest" parameterMap="pm" statementType="CALLABLE" resultMap="rm">
        CALL pro(#{userId,mode=IN},#{userCount_2,mode=OUT,jdbcType=INTEGER});
    </select>
 
    <parameterMap id="pm" type="java.util.Map">
        <parameter property="userId" jdbcType="INTEGER" mode="IN"></parameter>
        <parameter property="userCount_2" jdbcType="INTEGER" mode="OUT"></parameter>
    </parameterMap>
 
    <resultMap id="rm" type="com.csstj.srm.entity.procedureTestEntity">
        <result column="id" property="id"></result>
        <result column="name" property="userName"></result>
    </resultMap>

三、返回多個(gè)結(jié)果集

四、第二種配置也可以

CALL s_generatePlan_new (
#{organizationId, mode=IN,jdbcType=VARCHAR},
#{gradeId, mode=IN,jdbcType=VARCHAR},
#{semesterId, mode=IN,jdbcType=VARCHAR},
#{className, mode=IN,jdbcType=VARCHAR},
#{employeeCode, mode=IN,jdbcType=VARCHAR},
#{courseName, mode=IN,jdbcType=VARCHAR},
#{classroomName, mode=IN,jdbcType=VARCHAR},
#{approverId, mode=IN,jdbcType=VARCHAR},
#{createBy, mode=IN,jdbcType=VARCHAR},
#{total,mode=OUT ,jdbcType=VARCHAR})

到此這篇關(guān)于mybatis調(diào)用mysql存儲(chǔ)過(guò)程(返回參數(shù),單結(jié)果集,多結(jié)果集)的文章就介紹到這了,更多相關(guān)mybatis調(diào)用mysql存儲(chǔ)過(guò)程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于線程、并發(fā)的基本概念(詳解)

    基于線程、并發(fā)的基本概念(詳解)

    下面小編就為大家?guī)?lái)一篇基于線程、并發(fā)的基本概念(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Struts2學(xué)習(xí)教程之Action類(lèi)如何訪問(wèn)WEB資源

    Struts2學(xué)習(xí)教程之Action類(lèi)如何訪問(wèn)WEB資源

    這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)教程之Action類(lèi)如何訪問(wèn)WEB資源的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • java中Class.forName方法的作用詳解

    java中Class.forName方法的作用詳解

    Class.forName(xxx.xx.xx) 返回的是一個(gè)類(lèi),但Class.forName方法的作用到底是什么終?下面這篇文章就來(lái)給大家詳細(xì)介紹了關(guān)于java中Class.forName方法的作用,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-06-06
  • JAVA 生成隨機(jī)數(shù)并根據(jù)后臺(tái)概率靈活生成的實(shí)例代碼

    JAVA 生成隨機(jī)數(shù)并根據(jù)后臺(tái)概率靈活生成的實(shí)例代碼

    本篇文章主要介紹了JAVA 生成隨機(jī)數(shù)并根據(jù)后臺(tái)概率靈活生成的實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • Java Servlet線程中AsyncContext異步處理Http請(qǐng)求

    Java Servlet線程中AsyncContext異步處理Http請(qǐng)求

    這篇文章主要介紹了Java Servlet線程中AsyncContext異步處理Http請(qǐng)求及在業(yè)務(wù)中應(yīng)用,AsyncContext是Servlet 3.0使Servlet 線程不再需要一直阻塞,直到業(yè)務(wù)處理完畢才能再輸出響應(yīng),最后才結(jié)束該Servlet線程
    2023-03-03
  • 解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法

    解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法

    這篇文章主要介紹了解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法,中文問(wèn)題一直是很多人難以解決的問(wèn)題,對(duì)這方面感興趣的朋友可以參考一下
    2015-11-11
  • SpringMVC中@ModelAttribute與@RequestBody的區(qū)別及說(shuō)明

    SpringMVC中@ModelAttribute與@RequestBody的區(qū)別及說(shuō)明

    這篇文章主要介紹了SpringMVC中@ModelAttribute與@RequestBody的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 關(guān)于@RequestParam的使用所遇到的404問(wèn)題

    關(guān)于@RequestParam的使用所遇到的404問(wèn)題

    這篇文章主要介紹了關(guān)于@RequestParam的使用所遇到的404問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 詳解springboot?springsecuroty中的注銷(xiāo)和權(quán)限控制問(wèn)題

    詳解springboot?springsecuroty中的注銷(xiāo)和權(quán)限控制問(wèn)題

    這篇文章主要介紹了springboot-springsecuroty?注銷(xiāo)和權(quán)限控制,賬戶(hù)注銷(xiāo)需要在SecurityConfig中加入開(kāi)啟注銷(xiāo)功能的代碼,權(quán)限控制要導(dǎo)入springsecurity和thymeleaf的整合依賴(lài),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-03-03
  • SpringBoot+Redis執(zhí)行l(wèi)ua腳本的方法步驟

    SpringBoot+Redis執(zhí)行l(wèi)ua腳本的方法步驟

    這篇文章主要介紹了SpringBoot+Redis執(zhí)行l(wèi)ua腳本的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評(píng)論