feat: 实现个人中介批量导入ON DUPLICATE KEY UPDATE SQL
使用INSERT ... ON DUPLICATE KEY UPDATE实现单次SQL完成插入或更新操作。 - 仅更新Excel中非空的字段 - 自动更新update_time和update_by - 保留created_by和create_time等审计字段 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -52,4 +52,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<!-- 批量导入个人中介数据(使用ON DUPLICATE KEY UPDATE) -->
|
||||
<insert id="importPersonBatch">
|
||||
INSERT INTO ccdi_biz_intermediary (
|
||||
biz_id, person_type, person_sub_type, relation_type,
|
||||
name, gender, id_type, person_id, mobile, wechat_no,
|
||||
contact_address, company, social_credit_code, position,
|
||||
related_num_id, data_source, remark,
|
||||
created_by, updated_by, create_time, update_time
|
||||
) VALUES
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(
|
||||
#{item.bizId}, #{item.personType}, #{item.personSubType}, #{item.relationType},
|
||||
#{item.name}, #{item.gender}, #{item.idType}, #{item.personId}, #{item.mobile}, #{item.wechatNo},
|
||||
#{item.contactAddress}, #{item.company}, #{item.socialCreditCode}, #{item.position},
|
||||
#{item.relatedNumId}, #{item.dataSource}, #{item.remark},
|
||||
#{item.createdBy}, #{item.updatedBy}, #{item.createTime}, #{item.updateTime}
|
||||
)
|
||||
</foreach>
|
||||
ON DUPLICATE KEY UPDATE
|
||||
name = IF(VALUES(name) IS NOT NULL AND VALUES(name) != '', VALUES(name), name),
|
||||
gender = IF(VALUES(gender) IS NOT NULL AND VALUES(gender) != '', VALUES(gender), gender),
|
||||
id_type = IF(VALUES(id_type) IS NOT NULL AND VALUES(id_type) != '', VALUES(id_type), id_type),
|
||||
mobile = IF(VALUES(mobile) IS NOT NULL AND VALUES(mobile) != '', VALUES(mobile), mobile),
|
||||
wechat_no = IF(VALUES(wechat_no) IS NOT NULL AND VALUES(wechat_no) != '', VALUES(wechat_no), wechat_no),
|
||||
contact_address = IF(VALUES(contact_address) IS NOT NULL AND VALUES(contact_address) != '', VALUES(contact_address), contact_address),
|
||||
company = IF(VALUES(company) IS NOT NULL AND VALUES(company) != '', VALUES(company), company),
|
||||
social_credit_code = IF(VALUES(social_credit_code) IS NOT NULL AND VALUES(social_credit_code) != '', VALUES(social_credit_code), social_credit_code),
|
||||
position = IF(VALUES(position) IS NOT NULL AND VALUES(position) != '', VALUES(position), position),
|
||||
related_num_id = IF(VALUES(related_num_id) IS NOT NULL AND VALUES(related_num_id) != '', VALUES(related_num_id), related_num_id),
|
||||
relation_type = IF(VALUES(relation_type) IS NOT NULL AND VALUES(relation_type) != '', VALUES(relation_type), relation_type),
|
||||
person_type = IF(VALUES(person_type) IS NOT NULL AND VALUES(person_type) != '', VALUES(person_type), person_type),
|
||||
person_sub_type = IF(VALUES(person_sub_type) IS NOT NULL AND VALUES(person_sub_type) != '', VALUES(person_sub_type), person_sub_type),
|
||||
data_source = IF(VALUES(data_source) IS NOT NULL AND VALUES(data_source) != '', VALUES(data_source), data_source),
|
||||
remark = IF(VALUES(remark) IS NOT NULL, VALUES(remark), remark),
|
||||
update_time = NOW(),
|
||||
update_by = VALUES(updated_by)
|
||||
</insert>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user