mybatis 新增返回id的實(shí)現(xiàn)
前言
插入一條數(shù)據(jù)并返回ID的場(chǎng)景很常見,mybatis的要麻煩一點(diǎn),mybatis-plus可能之前api插入再getId()就行了,這里說一下Mybatis的兩個(gè)方式。
一、第一種方式
在實(shí)體類的映射文件 “*Mapper.xml” 這樣寫:
<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ù)自己的來
這里提醒下,insert標(biāo)簽中沒有resultType屬性,不要亂加。
實(shí)體類中uerId 要有g(shù)etter() and setter(); 方法
我在MySQL數(shù)據(jù)庫中建表時(shí)候已經(jīng)設(shè)置了字段自增長(zhǎng),
二、第二種方式
1.引入庫
代碼如下(示例):
<!-- 插入一個(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)簽中沒有resultType屬性,但是< selectKey >標(biāo)簽是有的。
order=“AFTER” 表示先執(zhí)行插入語句,之后再執(zhí)行查詢語句。
可被設(shè)置為 BEFORE 或 AFTER。
如果設(shè)置為 BEFORE,那么它會(huì)首先選擇主鍵,設(shè)置 keyProperty 然后執(zhí)行插入語句。
如果設(shè)置為 AFTER,那么先執(zhí)行插入語句,然后是 selectKey 元素-這和如 Oracle 數(shù)據(jù)庫相似,可以在插入語句中嵌入序列調(diào)用
keyProperty=“userId” 表示將自增長(zhǎng)后的Id賦值給實(shí)體類中的userId字段。
SELECT LAST_INSERT_ID() 表示MySQL語法中查詢出剛剛插入的記錄自增長(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)文章
Spring IoC學(xué)習(xí)之ApplicationContext中refresh過程詳解
這篇文章主要給大家介紹了關(guān)于Spring IoC學(xué)習(xí)之ApplicationContext中refresh過程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
java實(shí)現(xiàn)簡(jiǎn)單撲克牌游戲
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單撲克牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
spring boot使用logback日志級(jí)別打印控制操作
這篇文章主要介紹了spring boot使用logback日志級(jí)別打印控制操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03
springboot業(yè)務(wù)功能實(shí)戰(zhàn)之告別輪詢websocket的集成使用
WebSocket使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,允許服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于springboot業(yè)務(wù)功能實(shí)戰(zhàn)之告別輪詢websocket的集成使用,需要的朋友可以參考下2022-10-10
Java實(shí)現(xiàn)超市會(huì)員管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)超市會(huì)員管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
springboot?整合?clickhouse的實(shí)現(xiàn)示例
本文主要介紹了springboot?整合?clickhouse的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02

