mybatis批量插入返回主鍵失敗的坑及解決
批量插入返現(xiàn)沒有返回主鍵
關鍵點
foreach里的collection必須是list,不然就會報錯。


返回主鍵的標簽
關于返回主鍵ID,需要在insert標簽中添加,useGeneratedKeys=“true” keyProperty=“id”,useGeneratedKeys和keyProperty必須配合使用,keyProperty的字段就是返回的主鍵ID

mybatis3.3.1及以上的版本,才支持批量插入返回主鍵ID
mybatis批量新增之主鍵回寫
正常批量新增比較簡單 :
寫個例子
<insert id="batchInsert" parameterType="list" useGeneratedKeys="true" keyProperty="id">
INSERT INTO `x'x'x` (
`xx`,
`xxx`
)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.xx},
#{item.xxx}
)
</foreach>
</insert>注: useGeneratedKeys=“true” keyProperty=“id” 這個是為了回寫id的.
以前基本上沒有需要用到回寫id的地方,但是今天需要用到了.
但是一開始并沒有給我回寫主鍵.
原因就在于我的collection=“這里寫的不是list,而是xxList”.
我的mapper里面寫的是@param(“xxList”); 多個參數(shù)時需要使用這個注解指定.
這樣執(zhí)行是不會報錯的.但是id就是不會回寫.
再回頭, 這里應該是一個映射的概念, 以前應該是想錯了.
待我查閱了一些資料之后,我認為,這個collection,應該不是用來指定你在mapper里面?zhèn)魅氲氖裁磪?shù)的.
而是指定這個集合的類型是什么? 比如: list,set,map這樣的類型.
而當我寫成這樣時 : collection=“list” @Param(“list”).
id就給我回寫了.而當我傳入的參數(shù)不止一個時,我依舊可以使用@Param進行正常定義.但是是一個對象,一個String,我沒有試過傳入兩個對象的,而且我認為,無論需要什么字段,一個對象就可以搞定,我傳入兩個參數(shù),只是做一次嘗試.如果只是一個對象的話,甚至都不需要用@Param.id也是會回寫的.
但是 collection="list"這個是一定要這樣寫的.不然會報錯
要么全部成功,要么全部失敗,使用int去接收返回值,會接收到新增的條數(shù)的.
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Mybatis中實體類屬性與數(shù)據(jù)列表間映射方法介紹
這篇文章主要介紹了Mybatis中實體類屬性與數(shù)據(jù)列表間映射方法介紹,一共四中方法,供大家參考。2017-10-10
Java中Queue的poll()和remove()區(qū)別詳解
這篇文章主要介紹了Java中Queue的poll()和remove()區(qū)別詳解,Queue接口提供了許多方法,其中poll()和remove()是兩個常用的方法,它們的區(qū)別在于,當隊列為空時,poll()方法返回null,而remove()方法會拋出,需要的朋友可以參考下2023-07-07
java實現(xiàn)切割wav音頻文件的方法詳解【附外部jar包下載】
這篇文章主要介紹了java實現(xiàn)切割wav音頻文件的方法,結合實例形式詳細分析了java切割wav音頻文件的相關原理、操作技巧與注意事項,并附帶外部jar包供讀者下載,需要的朋友可以參考下2019-05-05
Java使用分治算法實現(xiàn)排序數(shù)索引功能示例【二分搜索】
這篇文章主要介紹了Java使用分治算法實現(xiàn)排序數(shù)索引功能,結合具體實例形式分析了java分治算法進行排序索引的相關操作技巧,需要的朋友可以參考下2017-09-09
Mybatis動態(tài)查詢字段及表名的實現(xiàn)
本文主要介紹了Mybatis動態(tài)查詢字段及表名的實現(xiàn),通過靈活運用Mybatis提供的動態(tài)SQL功能,我們可以構建更加靈活、高效的查詢語句,具有一定的參考價值,感興趣的小伙伴們可以參考一下2024-01-01
SpringCloud?hystrix斷路器與局部降級全面介紹
什么是服務降級?當服務器壓力劇增的情況下,根據(jù)實際業(yè)務情況及流量,對一些服務和頁面有策略的不處理或換種簡單的方式處理,從而釋放服務器資源以保證核心交易正常運作或高效運作2022-10-10
Spring中Bean有關NullPointerException異常的原因分析
在Spring中使用@Autowired注解注入的bean不能在靜態(tài)上下文中訪問,否則會導致NullPointerException,解決方法包括避免在靜態(tài)方法中使用注入的bean,或者使用Spring的ApplicationContext來獲取bean,但后者不推薦2024-12-12

