写了个springboot 的demo,增删查都没问题,但是更新报错

xml文件更新语句:

<update id="update" parameterType="com.example.demo.entity.User">
    update `user`
    <set>
        <if test="name != null and name!=''">
            name = # {user.name},
        </if>

        <if test="desc != null and desc!=''">
            desc = # {user.desc}
        </if>
    </set>
    where id = # {user.id}

</update>

 

控制台报错org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [user, param1]

<update id="update" parameterType="com.example.demo.entity.User">
    update `user`
    <set>
        <if test="name != null and name!=''">
            name = # {user.name},
        </if>

        <if test="desc != null and desc!=''">
            desc = # {user.desc}
        </if>
    </set>
    where id = # {user.id}

</update>

报错的信息告诉你name找不到,
<if test="name != null and name!=''">  //这里报错了,应该用user.name!=null and user.name!=''
            name = # {user.name},
</if>


最后正确的修改是:
<update id="update" parameterType="com.example.demo.entity.User">
    update `user`
    <set>
        <if test="user.name != null and user.name!=''">
            name = # {user.name},
        </if>

        <if test="user.desc != null and user.desc!=''">
            desc = # {user.desc}
        </if>
    </set>
    where id = # {user.id}

</update>

 

问题解决请采纳!!!

mapper的修改接口加参数绑定了吗@Param(“user”)

- -

实体类User记得添加getter setter方法

mapper方法参数

update(User user)

<update id="update" parameterType="com.example.demo.entity.User">
    update `user`
    <set>
        <if test="name != null and name!=''">
            name = # {name},
        </if>

        <if test="desc != null and desc!=''">
            desc = # {desc}
        </if>
    </set>
    where id = # {id}

</update>