场景:接口同时实现 插入更新操作,关于on duplicate key记录,使用时注意,存在多个更新参数时,又存在if 判断的前提下,需要使用对应的trim字段去替换信息。
踩到了坑:因为之前没有写if 判断,导致报错,检查后,添加if 又出现了,部分字段不存在,导致的结尾符号 逗号, 引发的报错,因此需要用trim去调整各个字段信息。
INSERT INTO msg_custom_message_sms_setting
<trim prefix="(" suffix=")" suffixOverrides=",">
`ID`,
`TENANT_CODE`,
`TEMPLATE_ID`,
<if test="templateType!=null and templateType!=''">
`TEMPLATE_TYPE`,
</if>
`LAST_UPDATE_DTM`,
<if test="replaceParam!=null and replaceParam!=''">
`REPLACE_PARAM`,
</if>
<if test="lastUpdateUser!=null and lastUpdateUser!=''">
`LAST_UPDATE_USER`,
</if>
<if test="content!=null and content!=''">
`CONTENT`,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<choose>
<when test="id!=null and id!=''">
#{id},
</when>
<otherwise>
uuid(),
</otherwise>
</choose>
#{tenantCode},
#{templateId},
<if test="templateType!=null and templateType!=''">
#{templateType},
</if>
<choose>
<when test="lastUpdateDtm!=null and lastUpdateDtm!=''">
#{lastUpdateDtm},
</when>
<otherwise>
now(),
</otherwise>
</choose>
<if test="replaceParam!=null and replaceParam!=''">
#{replaceParam},
</if>
<if test="lastUpdateUser!=null and lastUpdateUser!=''">
#{lastUpdateUser},
</if>
<if test="content!=null and content!=''">
#{content},
</if>
</trim>
on duplicate key update
<trim suffixOverrides=",">
<if test="templateId!=null and templateId!=''">
TEMPLATE_ID = VALUES(TEMPLATE_ID),
</if>
<if test="lastUpdateDtm!=null and lastUpdateDtm!=''">
LAST_UPDATE_DTM = VALUES(LAST_UPDATE_DTM),
</if>
<if test="replaceParam!=null and replaceParam!=''">
REPLACE_PARAM = VALUES(REPLACE_PARAM),
</if>
<if test="lastUpdateUser!=null and lastUpdateUser!=''">
LAST_UPDATE_USER = VALUES(LAST_UPDATE_USER),
</if>
<if test="content!=null and content!=''">
CONTENT = VALUES(CONTENT),
</if>
</trim>