Mybatis-Plus将字段设置为null解决方法

 更新时间:2023年04月25日 11:10:53   作者:Java小白笔记  
MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增 强不做改变,为简化开发、提高效率而生,下面这篇文章主要给大家介绍了关于Mybatis-Plus将字段设置为null的解决方法的相关资料,需要的朋友可以参考下

Mybatis-Plus将字段设置为null

项目场景:

最近在做一个需求的时候需要把数据库中的某个字段设置为空

问题描述:

在代码中通过set方法对一个字段设置成null,发现并没有起作用

原因分析:

经过查询是因为Mybatis-Plus默认的更新策略设置的问题,Mybatis-Plus中FieldStrategy有三种策略:

  • IGNORED:忽略。不管有没有有设置属性,所有的字段都会设置到insert语句中,如果没设置值会更新为null;
  • NOT_NULL:非 NULL,默认策略。也就是忽略null的字段,不忽略"";
  • NOT_EMPTY:非空。为null,为空串的忽略,就是如果设置值为null,“”,不会插入数据库;

默认的是NOT_NULL,也就是忽略null字段,所以更新不成功。

解决方案:

需对 FieldStrategy 策略进行调整,有如下三种方式:

方式一:调整全局的验证策略,如下:

mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  typeAliasesPackage: com.test.application.test.admin.entity
  global-config:
    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
    id-type: 0
    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
    field-strategy: 0
    #驼峰下划线转换
    db-column-underline: true
    #刷新mapper 调试神器
    refresh-mapper: true
    #数据库大写下划线转换
    #capital-mode: true
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

方式二:【推荐】调整字段验证注解

Mybatis-Plus 版本3.1.2及以上,根据具体情况,在需要更新的字段中调整验证注解,如验证非空:

@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
private String name;

或者单个的例子:

@TableField(updateStrategy = FieldStrategy.IGNORED)
private String username;

方式三:使用 UpdateWrapper (3.x)

使用以下方法来进行更新或插入操作:

//updateAllColumnById(entity) // 全部字段更新: 3.0已经移除
mapper.update(
  new User().setName("mp").setAge(3),
  Wrappers.<User>lambdaUpdate()
          .set(User::getEmail, null) //把email设置成null
          .eq(User::getId, 2)
);

// 也可以参考下面这种写法
mapper.update(
   null,
   Wrappers.<User>lambdaUpdate()
      .set(User::getAge, 3)
      .set(User::getName, "mp")
      .set(User::getEmail, null) // 把email设置成null
      .eq(User::getId, 2)
);

总结

到此这篇关于Mybatis-Plus将字段设置为null的文章就介绍到这了,更多相关Mybatis-Plus字段设置null内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于maven搭建一个ssm的web项目的详细图文教程

    基于maven搭建一个ssm的web项目的详细图文教程

    这篇文章主要介绍了基于maven搭建一个ssm的web项目的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Maven2环境安装与准备工作详解

    Maven2环境安装与准备工作详解

    这篇文章主要为大家详细介绍了Maven2环境安装与准备工作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • spring boot教程之产生的背景及其优势

    spring boot教程之产生的背景及其优势

    这篇文章主要介绍了spring boot教程之产生的背景及其优势的相关资料,需要的朋友可以参考下
    2022-08-08
  • JsonProperty及JSONField注解的使用说明

    JsonProperty及JSONField注解的使用说明

    文章介绍了两个常用的Java库注解:Jackson的@JsonProperty和Fastjson的@JSONField,它们用于控制Java对象与JSON数据之间的序列化和反序列化,文章详细说明了这两个注解的常见属性及其使用场景,包括指定属性名、控制字段可见性、设置默认值和标记字段的必需性
    2024-12-12
  • Java中数组的一些常见操作和技巧分析

    Java中数组的一些常见操作和技巧分析

    这篇文章主要给大家介绍了关于Java中数组的一些常见操作和技巧分析的相关资料,数组(Array)是Java中的一种引用数据类型,是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理,需要的朋友可以参考下
    2023-08-08
  • 使用React和springboot做前后端分离项目的步骤方式

    使用React和springboot做前后端分离项目的步骤方式

    这篇文章主要介绍了使用React和springboot做前后端分离项目的步骤方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 一文带你了解Spring中@Enable开头注解的使用

    一文带你了解Spring中@Enable开头注解的使用

    前面的文章给大家介绍 Spring 的重试机制的时候有提到过 Spring 有很多 @Enable 开头的注解,平时在使用的时候也没有注意过为什么会有这些注解,今天就给大家介绍一下
    2022-09-09
  • springboot+mybatis配置控制台打印sql日志的方法

    springboot+mybatis配置控制台打印sql日志的方法

    这篇文章主要介绍了springboot+mybatis配置控制台打印sql日志的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • mybatis.type-aliases-package之巨坑的解决

    mybatis.type-aliases-package之巨坑的解决

    这篇文章主要介绍了mybatis.type-aliases-package之巨坑的解决,具有很好的参考价值,希望对大家有所帮助。
    2021-09-09
  • Java数据结构之线段树的原理与实现

    Java数据结构之线段树的原理与实现

    线段树是一种二叉搜索树,是用来维护区间信息的数据结构。本文将利用示例详细讲讲Java数据结构中线段树的原理与实现,需要的可以参考一下
    2022-06-06

最新评论