mybatis 新增返回id的實(shí)現(xiàn)
前言
插入一條數(shù)據(jù)并返回ID的場(chǎng)景很常見(jiàn),mybatis的要麻煩一點(diǎn),mybatis-plus可能之前api插入再getId()就行了,這里說(shuō)一下Mybatis的兩個(gè)方式。
一、第一種方式
在實(shí)體類的映射文件 “*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í)體類中的userId字段。
- parameterType=“com.xxx.mybatis.User” 這個(gè)屬性指向傳遞的參數(shù)實(shí)體類
- id=“insertAndGetId” 這個(gè)不是固定叫這個(gè)的,你可以根據(jù)自己的來(lái)
這里提醒下,insert標(biāo)簽中沒(méi)有resultType屬性,不要亂加。
實(shí)體類中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í)行查詢語(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í)體類中的userId字段。
SELECT LAST_INSERT_ID() 表示MySQL語(yǔ)法中查詢出剛剛插入的記錄自增長(zhǎng)Id.
實(shí)體類中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)文章
mybatis報(bào)Query?was?Empty異常的問(wèn)題
這篇文章主要介紹了mybatis報(bào)Query?was?Empty異常的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
解決RestTemplate 請(qǐng)求接收自定義400+ 或500+錯(cuò)誤
這篇文章主要介紹了解決RestTemplate 請(qǐng)求接收自定義400+ 或500+錯(cuò)誤,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java高級(jí)用法中的JNA類型映射注意細(xì)節(jié)及使用問(wèn)題
本文介紹了在使用JNA方法映射中應(yīng)該注意的一些細(xì)節(jié)和具體的使用問(wèn)題,對(duì)java??JNA類型映射注意細(xì)節(jié)感興趣的朋友一起看看吧2022-04-04
IDEA未配置SQL方言:無(wú)法使用SQL提示解決方法
在使用IDEA進(jìn)行SQL開(kāi)發(fā)時(shí),如果未配置SQL方言可能會(huì)導(dǎo)致一些問(wèn)題,如無(wú)法正確識(shí)別數(shù)據(jù)庫(kù)中的關(guān)鍵字、數(shù)據(jù)類型等,這篇文章主要給大家介紹了關(guān)于IDEA未配置SQL方言,無(wú)法使用SQL提示解決方法的相關(guān)資料,需要的朋友可以參考下2024-07-07
java通過(guò)HttpServletRequest獲取post請(qǐng)求中的body內(nèi)容的方法
本篇文章主要介紹了java通過(guò)HttpServletRequest獲取post請(qǐng)求中的body內(nèi)容的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
Java中的布隆過(guò)濾器原理實(shí)現(xiàn)和應(yīng)用
Java中的布隆過(guò)濾器是一種基于哈希函數(shù)的數(shù)據(jù)結(jié)構(gòu),能夠高效地判斷元素是否存在于一個(gè)集合中。它廣泛應(yīng)用于緩存、網(wǎng)絡(luò)協(xié)議、數(shù)據(jù)查詢等領(lǐng)域,在提高程序性能和減少資源消耗方面具有顯著優(yōu)勢(shì)2023-04-04

