MybatisPlus不改变全局策略和字段注解把字段更新为null的方法

发布时间:2022-01-25 09:09:11 作者:iii
来源:亿速云 阅读:318

本篇内容介绍了“MybatisPlus不改变全局策略和字段注解把字段更新为null的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

mybatis-plus 以下简称mp,目前应该也算是主流的一款数据访问层应用框架。源于其对mybatis 的近乎完美的封装,让我们在使用的时候无比的顺滑, 几乎提供了所有单表操作的方法,大大提升了效率。并且这款框架还是国产的哦,没了解过的可以去了解一下。 

回归正题,我们这次来讲一下,怎么样通过mp将数据库中的一个字段更新为null. 可能很多人会觉得奇怪,更新为null, 直接set field = null 不就可以了。这里大家要注意一下,一般情况,我们在使用mp的时候,他的默认策略是空不更新, 这个也是非常主流和常见的一种设置。 为什么这么说呢, 比如我们将一个user表中的  del_flag 设置为1,  一般情况我们只需这么做就行:

User user = new User();
 
user.setId(1);
 
user.setDelFlag(1);
 
userService.update(user);

这个时候,其实其他的字段都是空,如果他的策略是空更新,那么执行之后,表里就只有id 和del_flag有值,其余的字段都是Null,很明显这不是我们想要的结果,这就是默认的空不更新策略。

这个时候就出现了一个痛点,必须我是需要把表中的某个字段更新为空,那应该怎么做的?

一是我们将全局更新策略设置为空可以更新

二是将这个字段设置为空可以更新。

这两种方式都是我极力不推荐的,大家也尽量不要使用这两种方法,真的非常危险,有可能导致别人在调用更新方法的时候不小心就把你的某些字段置为null 了。

这里推荐一种方法,也是官网给出的,但是必须要求mp的版本 大于3, 如果是3以下的版本没有这个功能,就是使用UpdateWrapper.

比如,我们想把  user表中的gender设置为空: 

LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
 
wrapper.set(User::getGender(), null);
 
wrapper.eq(User::getId(), 1);
 
userService.update(wrapper);
通过UpdateWrapper 可以设置null.

“MybatisPlus不改变全局策略和字段注解把字段更新为null的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. mysql 判断字段是否为null
  2. Hive 1.1.0 某些字段的查询结果为NULL

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatisplus

上一篇:Java使用list集合remove需要注意的事项有哪些

下一篇:Linux下如何安装SVN服务端

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》