mybatis update set 多个字段

Posted 星辰大海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis update set 多个字段相关的知识,希望对你有一定的参考价值。

<update id="updateCustomer" parameterType="com.entrym.domain.Customer">
    UPDATE customer set
    <if test="name!=null">name=#{name,jdbcType=VARCHAR},</if>
    <if test="role!=null">role=#{role,jdbcType=VARCHAR},</if>
    <if test="userId != null">user_id = #{userId,jdbcType=INTEGER},</if>
    <if test="qq != null">qq = #{qq,jdbcType=VARCHAR},</if>
    <if test="mobile != null">mobile = #{mobile,jdbcType=VARCHAR}</if>
    WHERE id =#{id,jdbcType=BIGINT}

如果上面的mobile字段为null,执行下面的SQL语句

UPDATE customer set name=?,role=?,userId=?,qq=? where id=?

where 前面有逗号“,”就会报错

使用trim可以删掉最后字段的逗号“,”
set已被包含在trim中,所以不用重复写了:

<update id="updateCustomer" parameterType="com.entrym.domain.Customer">
    UPDATE customer
    <trim prefix="set" suffixOverrides=",">
      <if test="claimTime!=null">claim_time=#{claimTime,jdbcType=VARCHAR},</if>
      <if test="claimState!=null">claim_state=#{claimState,jdbcType=INTEGER},</if>
      <if test="name!=null">name=#{name,jdbcType=VARCHAR},</if>
      <if test="role!=null">role=#{role,jdbcType=VARCHAR},</if>
      <if test="platformAccount!=null">platform_account=#{platformAccount,jdbcType=VARCHAR},</if>
      <if test="collaborateTime!=null">collaborate_time=#{collaborateTime,jdbcType=VARCHAR},</if>
     <if test="collaborateState!=null">collaborate_state=#{collaborateState,jdbcType=INTEGER},</if>
      <if test="userId != null">user_id = #{userId,jdbcType=INTEGER},</if>
    <if test="qq != null">qq = #{qq,jdbcType=VARCHAR},</if>
    <if test="mobile != null">mobile = #{mobile,jdbcType=VARCHAR}</if>
     </trim>
     WHERE id =#{id,jdbcType=BIGINT}
</update> 

 

以上是关于mybatis update set 多个字段的主要内容,如果未能解决你的问题,请参考以下文章

oracle 怎么理解update 表 set 字段1 = 值,字段2 = 值 where 字段3 = 值

如何使用官方 c# 驱动程序在 MongoDB 中使用 Update.Set 更新多个字段?

oracle update set 多个字段

Mybatis Plus 更新时间 updateTime字段报错 Could not set property 'updateTime'

如何使用LINQ返回多个自选字段

mybatisplus 更新字段为null