MyBatis解决Update动态SQL逗号的问题

 最做项目遇到以下情况,MyBatis中需要动态拼接Update,由于之前忙着赶项目,就直接照着下面的这样写,结果发现系统出现了异常,原来这样写如果 id=null就会出错
UPDATE     TABLE
         SET   
       <if test="id!=null">
        id= #{id,jdbcType=INTEGER}

       </if>

      <if test"name!=null">

        ,name = #{name,jdbcType=VARCHAR}

     </if>

where id = #{id,jdbcType=INTEGER}


于是我查阅了网上的Mybatis的API和官方文档,找到了如下解决办法

UPDATE     TABLE
       <trim prefix="set" suffixOverrides=",">  
       <if test="id!=null">
        id= #{id,jdbcType=INTEGER},
       </if>

      <if test"name!=null">
        name = #{name,jdbcType=VARCHAR},
     </if>
     </trim>
where id = #{id,jdbcType=INTEGER}

<trim>节点标签:

trim主要功能是可以在Trim包含的内容前加上某些前缀(prefix),也可以在Trim包含的内容之后加上某些后缀(suffix)

                        还可以把Trim包含内容的首部的某些内容忽略掉(prefixOverrides) ,也可以把Trim包含的内容的尾部的某些内容忽略掉(suffixOverrides)

<trim prefix="set" suffixOverrides=","> 

这行代码的意思是:在前面加上set  去掉最后的逗号!!!


备注方法2:把更新条件<if>标签内的内容,放在<set></set>标签中

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值