网站内容更新策略(【】空不更新策略(二)——)
优采云 发布时间: 2022-03-08 07:04网站内容更新策略(【】空不更新策略(二)——)
本文介绍了“MybatisPlus不改变全局策略和字段注解更新字段为null的方法”的相关知识。在实际案例的运行过程中,很多人都会遇到这样的困境。接下来,就让小编来教大家如何应对这些情况吧!我希望你仔细阅读并学到一些东西!
mybatis-plus以下简称mp,应该算是目前主流的数据访问层应用框架。由于它对mybatis的近乎完美的封装,让我们在使用的时候异常流畅,几乎提供了单表操作的所有方法,大大提高了效率。而且这个框架还是中国制造的。如果你不明白,你可以找出来。
言归正传,我们来说说如何通过mp将数据库中的某个字段更新为null。很多人可能会觉得更新为 null 很奇怪,直接设置 field = null 就可以了。每个人都应该注意这里。一般来说,当我们使用 mp 时,他的默认策略是空的,不更新。这也是一个非常主流和常见的设置。你为什么这么说?比如我们将一个user表中的del_flag设置为1,一般情况下我们只需要这样做:
User user = new User();
user.setId(1);
user.setDelFlag(1);
userService.update(user);
此时,其他字段实际上是空的。如果他的策略是更新empty,那么执行后,表中只有id和del_flag有值,其余字段为Null。显然,这不是我们想要的结果。这是默认的空不更新策略。
这时,就有了痛点。我必须将表中的一个字段更新为空。我该怎么办?
首先,我们将全局更新策略设置为空来更新
二是将此字段设置为空以进行更新。
我强烈不推荐这两种方法,大家也尽量不要使用这两种方法。这真的很危险。这可能会导致其他人在调用 update 方法时不小心将您的某些字段设置为 null。.
这里推荐一个方法,官网也给出了,但是mp的版本必须大于3。如果3以下的版本没有这个功能,那就是使用UpdateWrapper。
例如,我们想将 user 表中的性别设置为空:
LambdaUpdateWrapper 包装器 = 新的 LambdaUpdateWrapper();
wrapper.set(User::getGender(), null);
wrapper.eq(用户::getId(), 1);
userService.update(包装器);
Null 可以由 UpdateWrapper 设置。
《MybatisPlus不改变全局策略及字段注解更新字段为null的方法》的内容就介绍到这里,感谢阅读。想了解更多行业相关知识,可以关注易速云网站,小编为大家输出更多优质实用文章!