INSERT ON DUPLICATE KEY UPDATE

最近有个业务需求,有一批数据,在数据库里已存在的话,做insert操作,如果已存在,则做update操作。

脑子里出现两个方案,以此记录一下

方案一:

  遍历这批数据,通过id来区分新增跟更新操作,两次批量提交数据库,这个在此省略

方案二:

  使用on duplicate key update 操作,以下语法为mybatis。

  

INSERT INTO seller_sku_stock(
        id,
        sku_id,
        sku,
        warehouse_id,
        warehouse_name,
        stock
        )values
        <foreach collection="list"  item="item"  index="index"  separator="," >
            (
            #{item.id},
            #{item.skuId},
            #{item.sku},
            #{item.warehouseId},
            #{item.warehouseName},
            #{item.stock}
            )
        </foreach>
        ON DUPLICATE KEY UPDATE
        sku_id = VALUES(sku_id) ,
        sku = VALUES(sku) ,
        warehouse_id = VALUES(warehouse_id) ,
        warehouse_name = VALUES(warehouse_name) ,
        stock = VALUES(stock)

显然方案二只需要跟数据库交互一下,对接口性能有特殊要求的情况下,方案二效率会高于一,而且代码简洁度会高一些,但可读性可能差点,需要在看完sql的情况下,才

能明白整个逻辑

原文地址:https://www.cnblogs.com/tianxia-09/p/8033036.html