mybatis批量插入數據 ignore關鍵字忽略重複數據/唯一索引

<!-- 批量插入數據 -->
<insert id="insertxxxByBatch" parameterType="java.util.List">
    insert ignore into xxxtable (
        xxx_id,
        yyy_id,
        version
    )
    values
    <foreach collection="list" item="item" index="index"
             separator=",">
        (
        #{item.xxxId},#{item.yyyId},#{item.version}
        )
    </foreach>
</insert>

此表中,xxx_id爲唯一索引,批量插入數據時,使用ignore關鍵字,監測唯一索引,自動跳過重複數據,插入未重複數據。

不使用ignore關鍵字時,則會拋出違反唯一索引異常。

另:執行批量執行操作時,數據庫連接地址上需要加&allowMultiQueries=true,表示可以支持批量操作

IGNORE會導致自增ID不連續,這個應該與IGNORE的機制有關,因爲重複的那條插入SQL是執行了的,只是沒有入庫。

例:jdbc:mysql://ip:port/dataresource?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true

ignore的詳細解釋:https://blog.csdn.net/loongshawn/article/details/52387986

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章