在mybatis中,我们可以编写如下更新语句:
<update id="update" parameterType="com.test.User">
update USERS
<set>
<if test="user.name != null">NAME=#{user.name},</if>
<if test="user.age != null">AGE=#{user.age}</if>
</set>
</update>
然后它需要User
类来获取name
和age
属性的getter,没有update语句,映射可以在不添加任何getter的情况下工作,有没有办法避免更新语句的getter?
如果您使用最新版本3.5.1(change是在3.5.0中制作),它应该可以工作。
如果由于某种原因无法升级,则可能仍然有效1)从方法参数中删除@Param("user")
并且2)直接引用字段,如下所示。
<update id="update">
update USERS
<set>
<if test="name != null">NAME=#{name},</if>
<if test="age != null">AGE=#{age}</if>
</set>
</update>
直接属性引用仅在bean(即User
)是mapper方法的唯一参数时起作用。