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