最近有个业务需求,有一批数据,在数据库里已存在的话,做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的情况下,才
能明白整个逻辑