请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于在创建一个user去更新的问题

这里为何还要专门创建一个user去更新呢  我直接用传过来的user去更新不好吗

正在回答 回答被采纳积分+3

1回答

Geely 2017-07-04 22:48:12

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之后只更新想更新的。不必要的重复更新就不更新了。


0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉3291149 #1
    老师,我有两个疑问
    第一,新创建的user中updateTime是null,如果不给他赋值的话,updateTime是不会更新的
    第二,如果我用管理员身份登录的话,一旦我更新了用户的信息,那么session重保存的user对象中role属性没有被赋值,默认为0,也就是普通用户,这不很奇怪吗
    希望老师解惑!!
    回复 有任何疑惑可以回复我~ 2017-07-05 00:30:00
  • 李霄何 回复 提问者 慕粉3291149 #2
    我也遇到了这个问题,所以我把<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);
            }
    回复 有任何疑惑可以回复我~ 2017-07-05 15:54:10
  • Geely 回复 提问者 慕粉3291149 #3
    <if test="updateTime != null" >
         update_time = now(),
       </if>
    
    这个位置的判断可以不加~~就正常更新了~~
    回复 有任何疑惑可以回复我~ 2017-07-09 13:23:59
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信