采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这里为何还要专门创建一个user去更新呢 我直接用传过来的user去更新不好吗
updateByPrimaryKeySelective
hi同学,我们调用的 是这个方法
<update id="updateByPrimaryKeySelective" parameterType="com.mmall.pojo.User" > update mmall_user <set > <if test="username != null" > username = #{username,jdbcType=VARCHAR}, </if> <if test="password != null" > password = #{password,jdbcType=VARCHAR}, </if> <if test="email != null" > email = #{email,jdbcType=VARCHAR}, </if> <if test="phone != null" > phone = #{phone,jdbcType=VARCHAR}, </if> <if test="question != null" > question = #{question,jdbcType=VARCHAR}, </if> <if test="answer != null" > answer = #{answer,jdbcType=VARCHAR}, </if> <if test="role != null" > role = #{role,jdbcType=INTEGER}, </if> <if test="createTime != null" > create_time = #{createTime,jdbcType=TIMESTAMP}, </if> <if test="updateTime != null" > update_time = now(), </if> </set> where id = #{id,jdbcType=INTEGER}</update>
注意看他的实现,自己new之后只更新想更新的。不必要的重复更新就不更新了。
老师,我有两个疑问 第一,新创建的user中updateTime是null,如果不给他赋值的话,updateTime是不会更新的 第二,如果我用管理员身份登录的话,一旦我更新了用户的信息,那么session重保存的user对象中role属性没有被赋值,默认为0,也就是普通用户,这不很奇怪吗 希望老师解惑!!
我也遇到了这个问题,所以我把<if test="create_time/update_time!=null">这个条件去掉了。 第二个,更新的时候,我更新完后,重新去获取了数据库的数据,用这个拥有完整信息的user,去填充session中的current_user(密码已经置空) int updateCount = userMapper.updateByPrimaryKeySelective(updateUser); if (updateCount > 0) { updateUser = userMapper.selectByPrimaryKey(updateUser.getId()); updateUser.setPassword(StringUtils.EMPTY); return ServerResponse.createBySuccess("更新个人信息成功", updateUser); }
<if test="updateTime != null" > update_time = now(), </if> 这个位置的判断可以不加~~就正常更新了~~
登录后可查看更多问答,登录/注册
前后端分离,数据库接口设计,架构设计,功能开发,上线运维
10.3k 10
1.9k 22
1.4k 21
2.2k 21
2.0k 18