mybatis 新增返回id的實現(xiàn)
前言
插入一條數(shù)據(jù)并返回ID的場景很常見,mybatis的要麻煩一點,mybatis-plus可能之前api插入再getId()就行了,這里說一下Mybatis的兩個方式。
一、第一種方式
在實體類的映射文件 “*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” 表示給主鍵設置自增長
- keyProperty=“userId” 表示將自增長后的Id賦值給實體類中的userId字段。
- parameterType=“com.xxx.mybatis.User” 這個屬性指向傳遞的參數(shù)實體類
- id=“insertAndGetId” 這個不是固定叫這個的,你可以根據(jù)自己的來
這里提醒下,insert標簽中沒有resultType屬性,不要亂加。
實體類中uerId 要有getter() and setter(); 方法
我在MySQL數(shù)據(jù)庫中建表時候已經(jīng)設置了字段自增長,
二、第二種方式
1.引入庫
代碼如下(示例):
<!-- 插入一個商品 -->
<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 >標簽中沒有resultType屬性,但是< selectKey >標簽是有的。
order=“AFTER” 表示先執(zhí)行插入語句,之后再執(zhí)行查詢語句。
可被設置為 BEFORE 或 AFTER。
如果設置為 BEFORE,那么它會首先選擇主鍵,設置 keyProperty 然后執(zhí)行插入語句。
如果設置為 AFTER,那么先執(zhí)行插入語句,然后是 selectKey 元素-這和如 Oracle 數(shù)據(jù)庫相似,可以在插入語句中嵌入序列調用
keyProperty=“userId” 表示將自增長后的Id賦值給實體類中的userId字段。
SELECT LAST_INSERT_ID() 表示MySQL語法中查詢出剛剛插入的記錄自增長Id.
實體類中uerId 要有getter() and setter(); 方法
到此這篇關于mybatis 新增返回id的實現(xiàn)的文章就介紹到這了,更多相關mybatis 新增返回id內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決RestTemplate 請求接收自定義400+ 或500+錯誤
這篇文章主要介紹了解決RestTemplate 請求接收自定義400+ 或500+錯誤,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
Java高級用法中的JNA類型映射注意細節(jié)及使用問題
本文介紹了在使用JNA方法映射中應該注意的一些細節(jié)和具體的使用問題,對java??JNA類型映射注意細節(jié)感興趣的朋友一起看看吧2022-04-04
java通過HttpServletRequest獲取post請求中的body內容的方法
本篇文章主要介紹了java通過HttpServletRequest獲取post請求中的body內容的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02

