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


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

mybatis3.3.1及以上的版本,才支持批量插入返回主鍵ID
mybatis批量新增之主鍵回寫
正常批量新增比較簡(jiǎn)單 :
寫個(gè)例子
<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” 這個(gè)是為了回寫id的.
以前基本上沒有需要用到回寫id的地方,但是今天需要用到了.
但是一開始并沒有給我回寫主鍵.
原因就在于我的collection=“這里寫的不是list,而是xxList”.
我的mapper里面寫的是@param(“xxList”); 多個(gè)參數(shù)時(shí)需要使用這個(gè)注解指定.
這樣執(zhí)行是不會(huì)報(bào)錯(cuò)的.但是id就是不會(huì)回寫.
再回頭, 這里應(yīng)該是一個(gè)映射的概念, 以前應(yīng)該是想錯(cuò)了.
待我查閱了一些資料之后,我認(rèn)為,這個(gè)collection,應(yīng)該不是用來指定你在mapper里面?zhèn)魅氲氖裁磪?shù)的.
而是指定這個(gè)集合的類型是什么? 比如: list,set,map這樣的類型.
而當(dāng)我寫成這樣時(shí) : collection=“list” @Param(“list”).
id就給我回寫了.而當(dāng)我傳入的參數(shù)不止一個(gè)時(shí),我依舊可以使用@Param進(jìn)行正常定義.但是是一個(gè)對(duì)象,一個(gè)String,我沒有試過傳入兩個(gè)對(duì)象的,而且我認(rèn)為,無論需要什么字段,一個(gè)對(duì)象就可以搞定,我傳入兩個(gè)參數(shù),只是做一次嘗試.如果只是一個(gè)對(duì)象的話,甚至都不需要用@Param.id也是會(huì)回寫的.
但是 collection="list"這個(gè)是一定要這樣寫的.不然會(huì)報(bào)錯(cuò)
要么全部成功,要么全部失敗,使用int去接收返回值,會(huì)接收到新增的條數(shù)的.
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java Swing中的文本區(qū)(JTextArea)實(shí)現(xiàn)換行保存到文件的幾個(gè)方法
這篇文章主要介紹了Java Swing中的文本區(qū)(JTextArea)實(shí)現(xiàn)換行保存到文件的幾個(gè)方法,本文給出了4種方法,需要的朋友可以參考下2014-10-10
java項(xiàng)目中常用指標(biāo)UV?PV?QPS?TPS含義以及統(tǒng)計(jì)方法
文章介紹了現(xiàn)代Web應(yīng)用中性能監(jiān)控和分析的重要性,涵蓋了UV、PV、QPS、TPS等關(guān)鍵指標(biāo)的統(tǒng)計(jì)方法,并提供了示例代碼,同時(shí),文章還討論了性能優(yōu)化和瓶頸分析的策略,以及使用Grafana等可視化工具進(jìn)行監(jiān)控與告警的重要性2025-01-01
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(49)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你2021-08-08
Java基于iText7實(shí)現(xiàn)PDF添加通用文本水印的示例詳解
這篇文章主要為大家詳細(xì)介紹了Java基于iText7實(shí)現(xiàn)PDF添加通用文本水印的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2026-02-02

