请稍等 ...
×

采纳答案成功!

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

不理解为什么要new一个User

https://img1.sycdn.imooc.com/szimg//5955186b0001f9c712910685.jpg

new一个User的作用在于什么,,,,想了半天没明白,,,,

正在回答

6回答

about_blank 2017-08-31 16:41:22

传进来的user包含所有的数据,包含了你想更新的,和不想更新的

usermapper 下面那个方法的sql是根据你传进去的对象字段

判断是否为空,如果不为空则全部更新

如果直接传进去会把不想更新的一些东西也会覆盖掉

现在业务比较简单的时候 可能不会出大问题

当业务较多的时候user会被多个方法操作

有可能还会产生并发数据一致性吧 我猜的

是一种开发规范

还有一种可能是user对象比较大 操作数据库io 消耗比较大

我的理解


3 回复 有任何疑惑可以回复我~
  • 因为提前user.id,user.name不能修改,所以service来处理的时候,只需要把要修改的数据做一下修改就可以 (这里id就显得特别特别重要,因为我可以指定id,来处理我要指定修改的sql数据。所以在这里new对象,我想也是可以方便接收要被处理字段)。规范开发,不然会因为一些别的问题,把之前的数据给修改掉。这样你开发起来也比较明了。   我的理解
    回复 有任何疑惑可以回复我~ 2018-04-17 10:43:42
Geely 2018-04-22 12:23:16

updateBySelective只更新非空属性。new一个user,避免重写所有字段


简单的说就是这个原因~

0 回复 有任何疑惑可以回复我~
慕粉121948417 2018-03-01 16:58:07

new 的这个updateUser其实只是一个载体,通过参数里面传过来的那个user(特定的在Controller里面设定好id的user,这个user参数就是携带着从前端更新过的个人信息的user)将需要更新的信息放入到updateUser。sql里面回判断传进去的字段是不是空的,空的就不更新,不是空的就更新。我嘴笨,理解也不到位,多担待~

0 回复 有任何疑惑可以回复我~
慕码人7165578 2017-09-26 17:38:58

就是为了保证不更新的字段为null。也可以挨个把user不更新的字段都设置为null,但那样比较麻烦。

0 回复 有任何疑惑可以回复我~
卷幕 2017-08-31 16:26:31

我也有点不理解,一楼这哥们的回答,我也理解不了。不过,传进来的user,里面没有id的。传进来的user不就是要更新的数据吗?updateBySelective只更新非空属性。那就是有啥更新啥了,逻辑也对啊。

0 回复 有任何疑惑可以回复我~
慕码人7165578 2017-06-30 07:43:22

updateBySelective只更新非空属性。new一个user,避免重写所有字段

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信