好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > MySql批量插入時如何不重復插入數據

MySql批量插入時如何不重復插入數據

熱門標簽:大眾點評星級酒店地圖標注 話務外呼系統怎么樣 云南電商智能外呼系統價格 400電話可以辦理嗎 智能外呼系統復位 臨清電話機器人 外東北地圖標注 高清地圖標注道路 拉卡拉外呼系統

前言

Mysql插入不重復的數據,當大數據量的數據需要插入值時,要判斷插入是否重復,然后再插入,那么如何提高效率?解決的辦法有很多種,不同的場景解決方案也不一樣,數據量很小的情況下,怎么搞都行,但是數據量很大的時候,這就不是一個簡單的問題了。

一、insert ignore into

會忽略數據庫中已經存在 的數據,如果數據庫沒有數據,就插入新的數據,如果有數據的話就跳過當前插入的這條數據。這樣就可以保留數據庫中已經存在數據,達到在間隙中插入數據的目的。

控制器方法:

/**
 * 插入員工數據
 */
@PostMapping("save")
@ResponseBody
public CommonResultEmployee> save(@RequestBody Employee employee){
    return employeeService.saveEmp(employee);
}
INSERT INTO 插入數據
!--插入員工數據-->
insert id="saveEmp" parameterType="com.dt.springbootdemo.entity.Employee">
    INSERT INTO t_employee(id, name, age, salary, department_id)
    VALUES (#{id},#{name},#{age},#{salary},#{departmentId})
/insert>


我們新增一條主鍵ID為1的員工記錄。

當我再發送一次請求的時候,會報SQL語句執行錯誤,因為主鍵唯一,并且ID=1的記錄已經存在了。

加上ignore,再次添加一條ID=1的員工記錄

INSERT IGNORE INTO


并沒有報錯,但是也沒有添加成功,忽略了重復數據的添加。

二、on duplicate key update

當主鍵或者唯一鍵重復時,則執行update語句。

 ON DUPLICATE KEY UPDATE id = id

我們任然插入ID=1的員工記錄,并且修改一下其他字段(age=25):


查看數據庫記錄:

可以看到并沒有改變,數據也只有一條,并且返回了成功的提示。

這種方法有個前提條件,就是,需要插入的約束,需要是主鍵或者唯一約束(在你的業務中那個要作為唯一的判斷就將那個字段設置為唯一約束也就是unique key)。

擴展:這種方式還有其他業務場景的需求->>>定時更新其他字段。

我們在員工表中,再加入一個時間字段:

private Date updateTime;

然后我們根據updateTime字段來插入數據:

insert id="saveEmp" parameterType="com.dt.springbootdemo.entity.Employee">
    INSERT INTO t_employee(id, name, age, salary, department_id,update_time)
    VALUES (#{id},#{name},#{age},#{salary},#{departmentId},now())
    ON DUPLICATE KEY UPDATE update_time = now()
/insert>




如果插入的時候需要更新其他字段(比如age),該怎么做呢?



三、replace into

如果存在primary or unique相同的記錄,則先刪除掉。再插入新記錄。

REPLACE INTO
 !--插入員工數據-->
insert id="saveEmp" parameterType="com.dt.springbootdemo.entity.Employee">
    REPLACE INTO t_employee(id, name, age, salary, department_id,update_time)
    VALUES (#{id},#{name},#{age},#{salary},#{departmentId},now())
/insert>



總結:實際開發中,用得最多的就是第二種方式,進行的批量加。

!--插入員工數據-->
insert id="saveEmp" parameterType="java.util.List">
    INSERT INTO t_employee(id, name, age, salary, department_id,update_time)
    VALUES
    foreach collection="list" item="item" index="index" separator=",">
        (#{item.id},#{item.name},#{item.age},#{item.salary},#{item.departmentId},now())
    /foreach>
    ON DUPLICATE KEY UPDATE id = id
/insert>

控制器:

@PostMapping("save")
@ResponseBody
public CommonResultEmployee> save(@RequestBody ListEmployee> employeeList){
    return employeeService.saveEmp(employeeList);
}


如果存在相同的ID,則不會重復添加。

總結

實際工作中,使用最多的是方法二,根據不同的場景選擇不同的方式使用。

到此這篇關于MySql批量插入時如何不重復插入數據的文章就介紹到這了,更多相關MySql不重復插入內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL使用UNIQUE實現數據不重復插入

標簽:三明 定西 揚州 溫州 阿里 山西 無錫 福州

巨人網絡通訊聲明:本文標題《MySql批量插入時如何不重復插入數據》,本文關鍵詞  MySql,批量,插,入時,如,何不,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySql批量插入時如何不重復插入數據》相關的同類信息!
  • 本頁收集關于MySql批量插入時如何不重復插入數據的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 肥奶巨臀小说| 白嫩白嫩BBWBBWBBw| bl高h荡肉古代np| 男女啪啪免费视频网站| 芒果m3u8免费版电影| 国产精品丝袜黑色高跟| 两个人免费高清完整版在线观看| 聊斋艳遇| 久久精品无码人妻A级毛片玉甫团| 蜜臀视频AV视频一区尤物| 中国成熟的性偷窥| tube69欧美最新片| ??黄??色??视??频小便| 国产91?在线观看丝袜| 久久91综合国产91久久精品| 美女脱内衣露秘?部位| 一级a一级a爱片免费观看| 黄色都市小说| Free欧美性XXXXHD| 女友小月被教练猛烈进出视小说 | 亚洲午夜aaa在线Av观看 | yy4480青苹果高清影院| 纯肉巨黄H小奶娃男男| 国产精品亚洲欧美日韩一区在线| 欧美精品午夜理论片在线播放野人 | 中国农民真实bbwbbw| 洗澡无套自慰???麻豆| 无码人妻AⅤ一区二区三区96在线| 一个人看的小说在线观看| 又粗又大又深又硬又爽动态图| 操白嫩| 国产精品免费久久久久影院无码| 欧美精品一区二区三区久久久竹菊| 国产亚洲一区呦系列| 小孩操大人| 快穿之被黑化大佬占有| 婷婷亚洲五月色综合久久| 女被?到爽??流片调教捆绑| 乱亲子致怀孕的小说| 国产91对白在线播放| 一个人的电影在线观看www|