mybatis 动态拼接mysql语句

来源:互联网 发布:卖家农村淘宝签约好吗 编辑:程序博客网 时间:2024/06/08 14:37

问题描述

当传入的参数存在空时,在生成的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实现的功能是一样的。自己体会。


原创粉丝点击