- 先贴一下报错信息:
- 错误描述
报错发生在修改用户时,单独修改某一项属性,就会报上述错,同时修改所有属性,则不会报错,多方查找资料,提供一个解决思路。===》
动态sql
- 我之前的
sql
语句:
<update id="modifyUser" parameterType="User">
update smbms_user set
userName=#{userName},gender=#{gender},birthday=#{birthday},phone=#{phone},address=#{address},userRole=#{userRole},createdBy=#{createdBy},creationDate=#{creationDate}
where id=#{id}
</update>
- 修改后的sql语句(
mybatis
)
<update id="modifyUser" parameterType="User">
update smbms_user
<trim prefix="set" suffixOverrides=",">
<if test="userName!=null">userName=#{userName},</if>
<if test="gender!=null">gender=#{gender},</if>
<if test="birthday!=null">birthday=#{birthday},</if>
<if test="phone!=null">phone=#{phone},</if>
<if test="address!=null">address=#{address},</if>
<if test="userRole!=null">userRole=#{userRole},</if>
<if test="modifyBy!=null">modifyBy=#{modifyBy},</if>
<if test="modifyDate!=null">modifyDate=#{modifyDate},</if>
</trim>
where id=#{id}
</update>
-
更新时,部分不修改就传入:
null
-
总结:
涉及到更新操作时,可能不需要对所有字段更新,这时不需要更新的字段需要保持原字段信息。(因为不更新的字段,会被传递
null
到SQL
中,引起异常。)