insert into
taskm.task_backup(id,name, assignee_id, type_id, status, identifier, audit_status,
create_time, modify_time,plan_begin_time, plan_end_time, auto_start, act_begin_time, act_end_time,
material_id, estimated_workload, remaining_workload, finished_workload,
qualified_workload, qualified_rate, workload_metric, completed_rate, create_user,
assignee_type, priority, description, note, origin, origin_type, overtime,
cmmon, delay_remark, company, department, appointer_id, finish_note,
create_user_name, assignee_name, appointer_name, company_name, department_name,
pause_reason, pause_reason_id, cancel_reason, cancel_reason_id, overtime_reason,
maybe_overtime_reason, estimated_finish_time, total_time, group_status,
parent_id, out_source, origin_id, first_level_sub_order_name,
first_level_sub_order_id, second_level_sub_order_name, second_level_sub_order_id,
modify_user, original_plan_begin_time, original_plan_end_time, pu_id)
values
<foreach collection="list" item="item" separator=",">
(#{item.id},#{item.name}, #{item.assigneeId}, #{item.typeId}, #{item.status}, #{item.identifier},
#{item.auditStatus},
#{item.createTime},#{item.modifyTime},#{item.planBeginTime}, #{item.planEndTime}, #{item.autoStart},
#{item.actBeginTime},
#{item.actEndTime}, #{item.materialId}, #{item.estimatedWorkload}, #{item.remainingWorkload},
#{item.finishedWorkload},
#{item.qualifiedWorkload}, #{item.qualifiedRate}, #{item.workloadMetric}, #{item.completedRate},
#{item.creator},
#{item.assigneeType}, #{item.priority}, #{item.description}, #{item.note}, #{item.origin},
#{item.originType}, #{item.overtime},
#{item.cmmon}, #{item.delayRemark}, #{item.company}, #{item.department}, #{item.appointerId},
#{item.finishNote},
#{item.creatorName}, #{item.assigneeName}, #{item.appointerName}, #{item.companyName},
#{item.departmentName},
#{item.pauseReason}, #{item.pauseReasonId}, #{item.cancelReason}, #{item.cancelReasonId},
#{item.overTimeReason},
#{item.maybeOverTimeReason}, #{item.estimatedFinishTime}, #{item.totalTime}, #{item.groupStatus},
#{item.parentId}, #{item.outSource}, #{item.originId}, #{item.firstLevelSubOrderName},
#{item.firstLevelSubOrderId}, #{item.secondLevelSubOrderName}, #{item.secondLevelSubOrderId},
#{item.modifyUser}, #{item.originalPlanBeginTime}, #{item.originalPlanEndTime}, #{item.puId})
</foreach>
on duplicate key
update create_time=values(create_time)
Mybatis批量更新运用ON DUPLICATE KEY UPDATE ,如果记录不存在则插入,存在则更新。那么这个记录是否存在根据什么判断?规则如下:
如果你插入的记录导致UNIQUE索引重复,则认为这条记录存在。比如我创建表的时候设置的唯一索引为字段id,那么如果id重复时则执行更新,否则插入。当如果唯一索引为多个字段时如name,id,那么当name,id两个字段完全重复时候,此时就要执行更新语句。当然满足一部分唯一索引是不会触发更新操作的,此时会执行插入操作。
如果数据存在的话就会触发条件 ON DUPLICATE KEY UPDATE ,从而更新字段 create_time=values(create_time) 这里create_time是数据库中的格式而不是实体类中的createTime