更新个性签名的时候为什么要新建一个user?

更新个性签名的时候为什么要新建一个user?

​如题

这样的话数据库里的记录可以得到更新,但是session中的user数据不会更新呀


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,1、为什么要新建一个user。

因为userMapper.updateByPrimaryKeySelective(user)这个方法是插件自动生成的,在xml中,如果某个字段的值不为null的话,就把该字段的值更新进去,如果为null的话,则没有更新这个字段。

http://img1.sycdn.imooc.com//climg/5fbb68dd091c769006760582.jpg

如果直接从session里拿到的user,每个属性(或者说字段)都是有值的,比如updateTime,所以如果直接用这个session中的user,调用userMapper.updateByPrimaryKeySelective(user)方法,那update_time字段还是用以前的数据写入到数据库(不会默认更新到当前时间),就不符合逻辑了。

而且更新个性签名,也只是更新personalized_signature字段,所以只需要传入personalizedSignature和id就可以了,这样最安全,不会影响到其他字段。新建一个user,生成的sql语句是最干净的。

    ​2、但是session中的user数据不会更新

这里如果同学想实现可以使用手动来更新一下session中的对象,不过不建议这样做,因为当完成个性签名等内容的修改后,一般会重新登录或者重新请求一下来刷新数据,而不会直接后台修改session中的数据。

  • rock221 #1

    老师,传入的更新时间是null啊,但是数据库设置有更新时间,所以时间会自动更新吧。 

    2021-06-09 16:27:22
  • rock221 #2

    还有老师说的 session不会更新 ,重新登录不太符合逻辑, 那怎么刷新数据呢?想不太通。肯定要前端发送login的请求,但是密码怎么发送啊,在不重新登录的情况下。  是不是需要在扩展一个方法啊,更新session信息返回,并更新当前页面的信息啊。通过session获取用户信息,在从数据库查询到数据,覆盖当前session。?返回前端。


    2021-06-09 16:59:11
  • 同学你好,老师在上面的回答中回复了同学这个问题。

    祝学习愉快~

    2021-06-09 19:11:56
好帮手慕小班 2021-06-09 19:11:27

同学你好,1、传入更新时间为null,数据库中并不会自动更新时间,所以这里同学可以加上一个更新时间的参数来完成更新时间的设置。

http://img1.sycdn.imooc.com//climg/60c0a044091689fd06540371.jpg

    2、同学这里可以暂时使用手动更新来实现。

祝学习愉快!

  • rock221 #1

    老师,数据库会自动更新,因为设置的有自动更新的状态。  on  update XXX

    2021-06-09 19:25:26
  • 同学你好,非常抱歉,之前是老师没有注意到这个问题,这里更新时间会自动更新呐。

    祝学习愉快~

    2021-06-10 11:17:44
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师