在Mybatis xml映射器文件中,我尝试编写User表的更新查询,如下所示。每个输入参数都可以为null,并且仅在不为null时更新。您不知道哪个“如果”条件可能会遇到,哪个可能成为最后一个条件,因此必须在每个语句中添加逗号。
问题是多余的','导致查询异常。看来Mybatis并没有忽略多余的逗号。
我的解决方法是在结尾处加上“id =#{id}”,但这是多余的。
真正的解决方案是什么?
编码:
<update id="update" parameterType="User">
UPDATE user SET
<if test="username != null">
username = #{username},
</if>
<if test="password != null">
password = #{password},
</if>
<if test="email != null">
email = #{email},
</if>
id= #{id} // this is redundant
WHERE id = #{id}
</update>
PS:我使用的环境是:Java Spring + MyBatis + MySQL。
最佳答案
感谢MyBatis Generator的mapper.xml文件,我学习了如何隐藏逗号。 MyBatis的标签<set>
会删除最后一个逗号。它也用MyBatis - Dynamic Sql编写:
您可以将其编写为:
<update id="update" parameterType="User">
UPDATE user
<set>
<if test="username != null">
username = #{username},
</if>
<if test="password != null">
password = #{password},
</if>
<if test="email != null">
email = #{email},
</if>
</set>
WHERE id = #{id}
</update>
关于mysql - MyBatis更新查询中的多余逗号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22853061/