Mybatis 實現Mysql批量插入數據,判斷數據是否存在


  • insert into 插入數據庫時會檢查主鍵是否存在,存在會報錯

replace into 替換數據庫記錄,需要表中有主鍵或者unique索引,如果數據庫已存在的數據,會先刪除該數據然后新增。不存在的數據效果和insert into 一樣。

 <insert id="insertInfoBatch" parameterType="java.util.List">
    replace into GOVRECEIPTS (state,orgname,orgaddr,regauth,rcptyear,receipts,crtdate)
    values
    <foreach collection="list" item="item" index="index" separator=",">
      (#{item.state}, #{item.orgname}, #{item.orgaddr}, #{item.regauth},
      #{item.rcptyear}, #{item.receipts}, #{item.crtdate})
    </foreach>
  </insert>

    

insert ignore 需要表中有主鍵或者unique索引,如果數據庫中存在相同的數據,則忽略當前數據。不存在的數據效果和insert into 一樣。

  <insert id="insertInfoBatch" parameterType="java.util.List">
    insert ignore GOVRECEIPTS (state,orgname,orgaddr,regauth,rcptyear,receipts,crtdate)
    values
    <foreach collection="list" item="item" index="index" separator=",">
      (#{item.state}, #{item.orgname}, #{item.orgaddr}, #{item.regauth},
      #{item.rcptyear}, #{item.receipts}, #{item.crtdate})
    </foreach>

  on duplicate key update 使用該語法可在插入記錄的時候先判斷記錄是否存在,如果不存在則插入,否則更新,很方便,無需執行兩條SQL


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM