javax.el.ELException: 在类型*****上读取***时出错。

  1. 先贴一下报错信息:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 错误描述

报错发生在修改用户时,单独修改某一项属性,就会报上述错,同时修改所有属性,则不会报错,多方查找资料,提供一个解决思路。===》动态sql

  1. 我之前的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>
  1. 修改后的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>
  1. 更新时,部分不修改就传入:null
    在这里插入图片描述

  2. 总结:

涉及到更新操作时,可能不需要对所有字段更新,这时不需要更新的字段需要保持原字段信息。(因为不更新的字段,会被传递nullSQL中,引起异常。)

猜你喜欢

转载自blog.csdn.net/SoULikeMe/article/details/115130757
今日推荐