mybatis 动态拼接mysql语句

23 篇文章 0 订阅

问题描述

当传入的参数存在空时,在生成的mysql语句中,应该不存在,此时需要动态拼接mysql语句。

拼接方法 mybatis 的 trim 标签

下面是修改语句的拼接:

...
<update id="updateUser" parameterType="com.spring.handlers.model.User">
        UPDATE `user` 
        <trim prefix="set" suffixOverrides=",">
            <if test="departmentId != null and departmentId != ''">
             department_id = #{departmentId} ,
            </if>
            <if test="userName != null and userName != ''">
                username='${userName}',    
            </if>
            <if test="password != null and password != ''">
                password='${password}',    
            </if>
        </trim>

        WHERE id = 1;
    </update>
    ...

利用trim标签,可以设置开头为 set ,和去掉末尾的逗号。
trim标签的属性:
prefix :前缀,在拼接语句前面加上的字段;
suffix:后缀,在拼接语句后加上的字段;
prefixOverrides :前缀忽略,可以把包含内容的首部某些内容覆盖,即忽略;
suffixOverrides:后缀忽略,将内容最后的内容忽略。

换一种写法: set 标签

<update id="updateUserTwo" parameterType="com.spring.handlers.model.User">
        UPDATE `user` 
        <set>
            <if test="departmentId != null and departmentId != ''">
             department_id = #{departmentId} ,
            </if>
            <if test="userName != null and userName != ''">
                username='${userName}',    
            </if>
            <if test="password != null and password != ''">
                password='${password}',    
            </if>
        </set>

        WHERE id = #{id};
    </update>

这段代码,跟上面trim实现的功能是一样的。自己体会。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值