MybatisPlus 不修改全局策略和字段注解如何将字段更新为null

 更新时间:2021年04月06日 14:25:29   作者:Allen Leung  
这篇文章主要介绍了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.

官网说明: 

地址: https://mp.baomidou.com/guide/faq.html#%E6%8F%92%E5%85%A5%E6%88%96%E6%9B%B4%E6%96%B0%E7%9A%84%E5%AD%97%E6%AE%B5%E6%9C%89-%E7%A9%BA%E5%AD%97%E7%AC%A6%E4%B8%B2-%E6%88%96%E8%80%85-null

到此这篇关于MybatisPlus 不修改全局策略和字段注解如何将字段更新为null的文章就介绍到这了,更多相关MybatisPlus将字段更新为null内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatisplus之Wrappers.ne踩坑记录解决

    mybatisplus之Wrappers.ne踩坑记录解决

    这篇文章主要为大家介绍了mybatisplus之Wrappers.ne踩坑记录解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Java内存溢出场景及解决方案

    Java内存溢出场景及解决方案

    内存溢出是Java应用开发中常见的问题,但通过合理的代码优化、内存管理以及JVM参数调整,我们可以有效地避免和解决这类问题,这篇文章主要介绍了Java内存溢出场景及解决办法,需要的朋友可以参考下
    2024-04-04
  • Java中的@PreAuthorize注解源码解析

    Java中的@PreAuthorize注解源码解析

    这篇文章主要介绍了Java中的@PreAuthorize注解源码解析,@PreAuthorize注解会在方法执行前进行权限验证,支持Spring EL表达式,它是基于方法注解的权限解决方案,需要的朋友可以参考下
    2023-10-10
  • 详解SpringBoot之集成Spring AOP

    详解SpringBoot之集成Spring AOP

    本篇文章主要介绍了详解SpringBoot之集成Spring AOP,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Java 常量字符串过长的解决方法

    Java 常量字符串过长的解决方法

    这篇文章主要介绍了Java 常量字符串过长的解决方法,常量字符串过长会提示报错,下面我们就一起来了解一下解决方法
    2021-04-04
  • Spring EL表示式的运用@Value说明

    Spring EL表示式的运用@Value说明

    这篇文章主要介绍了Spring EL表示式的运用@Value说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Java 条件控制与循环控制实例

    Java 条件控制与循环控制实例

    下面小编就为大家带来一篇Java 条件控制与循环控制实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Mybatis常用标签整理

    Mybatis常用标签整理

    日常开发中,MyBatis中标签有着举足轻重的重要性,以下是一些MyBatis框架中常见的标签及案例,感兴趣的朋友跟随小编一起看看吧
    2007-02-02
  • spring schedule配置多任务动态cron(增删启停)

    spring schedule配置多任务动态cron(增删启停)

    这篇文章主要介绍了spring schedule配置多任务动态cron(增删启停),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java 添加Word目录的2种方法示例代码详解

    Java 添加Word目录的2种方法示例代码详解

    目录是一种能够快速、有效地帮助读者了解文档或书籍主要内容的方式。这篇文章主要介绍了Java 添加Word目录的2种方法 ,需要的朋友可以参考下
    2019-06-06

最新评论