mybatis 新增返回id的實(shí)現(xiàn)
前言
插入一條數(shù)據(jù)并返回ID的場(chǎng)景很常見(jiàn),mybatis的要麻煩一點(diǎn),mybatis-plus可能之前api插入再getId()就行了,這里說(shuō)一下Mybatis的兩個(gè)方式。
一、第一種方式
在實(shí)體類(lèi)的映射文件 “*Mapper.xml” 這樣寫(xiě):
<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.xxx.mybatis.User"> insert into user(userName,password,comment) values(#{userName},#{password},#{comment}) </insert>
小Tips:
- useGeneratedKeys=“true” 表示給主鍵設(shè)置自增長(zhǎng)
- keyProperty=“userId” 表示將自增長(zhǎng)后的Id賦值給實(shí)體類(lèi)中的userId字段。
- parameterType=“com.xxx.mybatis.User” 這個(gè)屬性指向傳遞的參數(shù)實(shí)體類(lèi)
- id=“insertAndGetId” 這個(gè)不是固定叫這個(gè)的,你可以根據(jù)自己的來(lái)
這里提醒下,insert標(biāo)簽中沒(méi)有resultType屬性,不要亂加。
實(shí)體類(lèi)中uerId 要有g(shù)etter() and setter(); 方法
我在MySQL數(shù)據(jù)庫(kù)中建表時(shí)候已經(jīng)設(shè)置了字段自增長(zhǎng),
二、第二種方式
1.引入庫(kù)
代碼如下(示例):
<!-- 插入一個(gè)商品 --> <insert id="insertProduct" parameterType="domain.model.ProductBean" > <selectKey resultType="java.lang.Long" order="AFTER" keyProperty="productId"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO t_product(productName,productDesrcible,merchantId)values(#{productName},#{productDesrcible},#{merchantId}); </insert>
小Tips:
< insert >標(biāo)簽中沒(méi)有resultType屬性,但是< selectKey >標(biāo)簽是有的。
order=“AFTER” 表示先執(zhí)行插入語(yǔ)句,之后再執(zhí)行查詢(xún)語(yǔ)句。
可被設(shè)置為 BEFORE 或 AFTER。
如果設(shè)置為 BEFORE,那么它會(huì)首先選擇主鍵,設(shè)置 keyProperty 然后執(zhí)行插入語(yǔ)句。
如果設(shè)置為 AFTER,那么先執(zhí)行插入語(yǔ)句,然后是 selectKey 元素-這和如 Oracle 數(shù)據(jù)庫(kù)相似,可以在插入語(yǔ)句中嵌入序列調(diào)用
keyProperty=“userId” 表示將自增長(zhǎng)后的Id賦值給實(shí)體類(lèi)中的userId字段。
SELECT LAST_INSERT_ID() 表示MySQL語(yǔ)法中查詢(xún)出剛剛插入的記錄自增長(zhǎng)Id.
實(shí)體類(lèi)中uerId 要有g(shù)etter() and setter(); 方法
到此這篇關(guān)于mybatis 新增返回id的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)mybatis 新增返回id內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot下如何實(shí)現(xiàn)支付寶接口的使用
這篇文章主要介紹了SpringBoot下如何實(shí)現(xiàn)支付寶接口的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11SpringBoot?對(duì)接飛書(shū)多維表格事件回調(diào)監(jiān)聽(tīng)流程分析
本文介紹了如何通過(guò)飛書(shū)事件訂閱機(jī)制和SpringBoot項(xiàng)目集成,對(duì)多維表數(shù)據(jù)的記錄變更進(jìn)行對(duì)接的詳細(xì)流程,包括如何創(chuàng)建應(yīng)用、配置參數(shù)、編寫(xiě)訂閱代碼、訂閱文檔事件以及在SpringBoot工程中集成的步驟,感興趣的朋友跟隨小編一起看看吧2024-12-12Java Swing JRadioButton單選按鈕具體使用
這篇文章主要介紹了Java Swing JRadioButton單選按鈕具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12淺談Spring Boot Web 應(yīng)用性能優(yōu)化
這篇文章主要介紹了淺談Spring Boot Web 應(yīng)用性能優(yōu)化,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Java中鍵盤(pán)輸入的幾種常見(jiàn)方式小結(jié)
本文主要介紹了Java中鍵盤(pán)輸入的幾種常見(jiàn)方式小結(jié),主要是三種方式IO流、Scanner類(lèi)、BufferedReader寫(xiě)入,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09springboot2中session超時(shí),退到登錄頁(yè)面方式
這篇文章主要介紹了springboot2中session超時(shí),退到登錄頁(yè)面方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01MyBatis動(dòng)態(tài)<if>標(biāo)簽使用避坑指南
這篇文章主要為大家介紹了MyBatis動(dòng)態(tài)<if>標(biāo)簽使用避坑指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03SpringBoot項(xiàng)目中使用OkHttp獲取IP地址的示例代碼
OkHttp?是一個(gè)由?Square?開(kāi)發(fā)的高效、現(xiàn)代的?HTTP?客戶(hù)端庫(kù),用于?Android?和?Java?應(yīng)用程序,它支持?HTTP/2?和?SPDY?等現(xiàn)代網(wǎng)絡(luò)協(xié)議,并提供了多種功能和優(yōu)化,本文給大家介紹了SpringBoot項(xiàng)目中如何獲取IP地址,需要的朋友可以參考下2024-08-08