更新用户信息

来源:6-7 更新用户个人信息功能开发

suwei666

2017-07-09

为什么更新用户信息的时候要新new一个updateUser对象呢?直接用传过来的user不就可以了吗

写回答

4回答

徐凌峰

2017-09-24

这里我个人认为<if test="updateTime == null" > update_time = now(), </if> 应该这样吧,因为我们前台不传updateTime过来,这样即使它为null也会调用nwo()函数进行更新啊

0
1
Geely
对的,updatetime这里不需要做判断,==null或者!=null这个判断都不需要加,之前在QQ群里说过,这里需要一个勘误
2017-09-24
共1条回复

suwei666

提问者

2017-07-09

当我添加了

//szimg.mukewang.com/5961f77c0001e1f303880038.jpg

,执行updateByPrimaryKeySelective()方法时,mysql才能执行她的now()函数,

//szimg.mukewang.com/5961f7c20001ffcf05250036.jpg


0
0

suwei666

提问者

2017-07-09

前辈,当我DEBUG到//szimg.mukewang.com/5961f5200001d17606500045.jpg这一行时,我发现新new的updataUser和传过来的user内容是一样的,而且他们的updateTime属性都是为空

//szimg.mukewang.com/5961f5b80001fd0502880235.jpg

。执行updateByPrimaryKeySelective()方法时,由于

//szimg.mukewang.com/5961f61b0001f6d203450070.jpg

所以更新时间根本不会执行,那这样是不是有点违背初衷?

0
0

Geely

2017-07-09

hi 同学你好


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
2
Geely
回复
徐凌峰
对的,updatetime这里不需要做判断,==null或者!=null这个判断都不需要加,之前在QQ群里说过,这里需要一个勘误
2017-09-24
共2条回复

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9476 学习 · 8804 问题

查看课程