ON DUPLICATE KEY UPDATE(mysql:有数据-修改、无数据-新增)
ON DUPLICATE KEY UPDATE的用法:(on duplicate key update)一般用来实现list的更新和新增。
如果有一个集合/数组需要根据某一个或者某几个字段组合的唯一索引判断是否存在,如果存在则更新对应的数据,如果不存在则新增。
对应的数据如下所示:根据station_id和statistics_date的组合值判断是新增还是修改需要建立一个组合索引,且保证是唯一的!!!才会生效
<insert id="insertOrUpdateOmsEntryRejectoverloadAnalysisReport" parameterType="java.util.List">
INSERT INTO oms_entry_rejectoverload_analysis_report(
operation_unit_id,operation_unit_name,station_id,
station_name,statistics_date,en_registration_total
) VALUES
<foreach collection="list" item="item" separator=",">
(#{item.operationUnitId},#{item.operationUnitName},#{item.stationId},
#{item.stationName},#{item.statisticsDate},#{item.enRegistrationTotal})
</foreach>
ON DUPLICATE KEY UPDATE
operation_unit_id = VALUES(operation_unit_id),
operation_unit_name = VALUES(operation_unit_name),
station_name = VALUES(station_name),
en_registration_total = VALUES(en_registration_total),
</insert>
ON DUPLICATE KEY UPDATE后面跟需要更新的字段,一般唯一索引或者组合索引是不需要更新的,如上所示,station_id和statistics_date就不更新了