码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis

时间:2020-04-06 15:59:50      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:mobile   优化   sql   null   问题   ide   user   收货地址   动态   

mybatis update

使用场景:当使用update进行更新的时候,数据表难免会有些不被更新的字段,如create_time,这些字段只想保留第一次插入进表的值,在后续更新sql语句中,只想更新需要被更新的字段。

解决办法1:

<!--更新收货地址-->
  <update id="updateByShipping" parameterType="com.mall.pojo.Shipping">
    update mall_shipping
    set
    receiver_name = #{receiverName,jdbcType=VARCHAR},
    receiver_phone = #{receiverPhone,jdbcType=VARCHAR},
    receiver_mobile = #{receiverMobile,jdbcType=VARCHAR},
    receiver_province = #{receiverProvince,jdbcType=VARCHAR},
    receiver_city = #{receiverCity,jdbcType=VARCHAR},
    receiver_district = #{receiverDistrict,jdbcType=VARCHAR},
    receiver_address = #{receiverAddress,jdbcType=VARCHAR},
    receiver_zip = #{receiverZip,jdbcType=VARCHAR},
    <if test="createTime != null">
      create_time = #{createTime,jdbcType=TIMESTAMP},
    </if>
    update_time = now()
    where id = #{id,jdbcType=INTEGER}
    and user_id = #{userId,jdbcType=INTEGER}
  </update>

解决办法2(优化)

<update id="updateUser" parameterType="com.test.entity.User">
        update BS_USER
            <trim prefix="set" suffixOverrides=",">
                <if test="ACCOUNT != null">ACCOUNT=#{ACCOUNT},</if>
                <if test="NAME != null">NAME=#{NAME},</if>
                <if test="PROV != null">PROV=#{PROV},</if>
                <if test="FAILURE_TIME != null">FAILURE_TIME=#{FAILURE_TIME},</if>
            </trim>
        where USERID=#{USERID}
    </update>

这种方法是将set标签换成<trim prefix="set"><trim>

标签中的suffixOverrides=","是去掉最后一个if后面的逗号,防止在动态更新多个参数,使用多个if的时候,因为最后一个逗号出现问题。

mybatis

标签:mobile   优化   sql   null   问题   ide   user   收货地址   动态   

原文地址:https://www.cnblogs.com/hsbolg/p/12642163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!