日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL + MyBatis 批量插入时存在则忽略或更新记录

發布時間:2025/3/12 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL + MyBatis 批量插入时存在则忽略或更新记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、存在時則忽略

為什么在發現重復時會忽略?這里面涉及到兩個地方。

1、重復則忽略。那么首先是需要判斷是否重復,這里是通過唯一索引判斷是否重復的。如果表中唯一索引的字段已經存在與將要插入的記錄行中唯一索引的字段值相同,則標識為重復。

MySQL 中建立唯一索引:ALTER TABLE ‘tableName’ ADD UNIQUE (‘column’);

如下面的代碼塊中的 ght_replace 表的 oldnumber 字段建立唯一索引:

ALTER TABLE ght_replace ADD UNIQUE (oldnumber);

2、通過在SQL語句中的 IGNORE 關鍵字標識,如果相同,則該條記錄行不插入。

如下面的代碼塊中所示:

@Insert({"<script>","insert ignore into ght_replace(oldnumber, newnumber)","values","<foreach item ='item' collection = 'andOldVoList' separator = ','>","(#{item.oldnumber}, #{item.newnumber})","</foreach>","ON DUPLICATE KEY UPDATE oldnumber = VALUES(oldnumber)","</script>"})int batchInsert(@Param("andOldVoList")List<NewAndOldVo> andOldVoList);

二、存在時則更新

@Insert({"<script>","insert into telit_project_relation(project_name, inside_project_number)","values","<foreach item ='dataInfo' collection = 'projectRelationEntities' separator = ','>","(#{dataInfo.projectName}, #{dataInfo.insideProjectNumber})","</foreach>","ON DUPLICATE KEY UPDATE project_name = VALUES(project_name)","</script>"})int batchInsert(@Param("projectRelationEntities")List<TelitProjectRelationEntity> projectRelationEntities);

存在時則更新代碼如上所示。存在則更新的關鍵在 "

ON DUPLICATE KEY UPDATE project_name = VALUES(project_name)

是數據庫中列名,不是 entity 中的屬性名

三、存在復合唯一索引時,批量插入,如果存在則更新

在使用符合唯一索引時也是一樣的,首先需要的是唯一索引:

ALTER TABLE asus_bom_relationship ADD UNIQUE INDEX(byd_material_no, bydComponent);

/*** 批量插入功能** @param entityList* @return*/@Insert({"<script>","insert into asus_bom_relationship(material_no, byd_material_no, bom_component, bydComponent)","values","<foreach item ='dataInfo' collection = 'entityList' separator = ','>","(#{dataInfo.materialNo}, #{dataInfo.bydMaterialNo}, #{dataInfo.bomComponent}, #{dataInfo.bydComponent})","</foreach>","ON DUPLICATE KEY UPDATE byd_material_no = VALUES(byd_material_no), bydComponent = VALUES(bydComponent)","</script>"})int batchInsert(@Param("entityList") List<RelationShipEntity> entityList); 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的MySQL + MyBatis 批量插入时存在则忽略或更新记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。