采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
new一个User的作用在于什么,,,,想了半天没明白,,,,
传进来的user包含所有的数据,包含了你想更新的,和不想更新的
usermapper 下面那个方法的sql是根据你传进去的对象字段
判断是否为空,如果不为空则全部更新
如果直接传进去会把不想更新的一些东西也会覆盖掉
现在业务比较简单的时候 可能不会出大问题
当业务较多的时候user会被多个方法操作
有可能还会产生并发数据一致性吧 我猜的
是一种开发规范
还有一种可能是user对象比较大 操作数据库io 消耗比较大
我的理解
因为提前user.id,user.name不能修改,所以service来处理的时候,只需要把要修改的数据做一下修改就可以 (这里id就显得特别特别重要,因为我可以指定id,来处理我要指定修改的sql数据。所以在这里new对象,我想也是可以方便接收要被处理字段)。规范开发,不然会因为一些别的问题,把之前的数据给修改掉。这样你开发起来也比较明了。 我的理解
updateBySelective只更新非空属性。new一个user,避免重写所有字段
简单的说就是这个原因~
new 的这个updateUser其实只是一个载体,通过参数里面传过来的那个user(特定的在Controller里面设定好id的user,这个user参数就是携带着从前端更新过的个人信息的user)将需要更新的信息放入到updateUser。sql里面回判断传进去的字段是不是空的,空的就不更新,不是空的就更新。我嘴笨,理解也不到位,多担待~
就是为了保证不更新的字段为null。也可以挨个把user不更新的字段都设置为null,但那样比较麻烦。
我也有点不理解,一楼这哥们的回答,我也理解不了。不过,传进来的user,里面没有id的。传进来的user不就是要更新的数据吗?updateBySelective只更新非空属性。那就是有啥更新啥了,逻辑也对啊。
登录后可查看更多问答,登录/注册
前后端分离,数据库接口设计,架构设计,功能开发,上线运维
10.4k 10
1.9k 22
1.5k 21
2.3k 21
2.1k 18