解决mybatisPlus null 值更新的问题

发现mybatisPlus会更新对象属性为null的值,

与field-strategy配置有关

mybatis-plus:
 global-config:
  db-config:
   field-strategy: not_null

在3.1.0版本中,其选择的值有

public enum FieldStrategy {
  IGNORED,
  NOT_NULL,
  NOT_EMPTY,
  DEFAULT;
  private FieldStrategy() {
  }
}

我刚开始选择的是ignored,所以null值会更新,像这样:

改成not_null,就是这样了

官网解释:

该策略约定了如何产出注入的sql,涉及insert,update以及wrapper内部的entity属性生成的 where 条件

官方链接: https://mp.baomidou.com/config/#fieldstrategy

补充:mybatis-plus更新的时候忽略null值判断

一般会更新操作都会判断null值,为null就不更新对应的字段。

但是有时候需要把特定的字段更新为null,使用mybatis-plus时可以在实体类特定属性上面加注解@TableField(strategy=FieldStrategy.IGNORED),就会忽略null值判断,将null更新进数据库。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • MyBatis-Plus 查询指定字段的实现

    首先创建一个数据库表,如下图所示: 然后创建一个Spring Boot项目,pom.xml和配置如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schema

  • 解决mybatis plus字段为null或空字符串无法保存到数据库的问题

    背景 项目中集成了mybatis plus, 今天在做后台的一个常规的增删改查时,发现字段值为null时,这个字段不会被保存到数据库 解决办法 在字段上加上 @TableField(strategy = FieldStrategy.IGNORED) strategy字段更新插入策略属性说明: IGNORED(0): "忽略判断", 所有字段都更新和插入 NOT_NULL(1): "非 NULL 判断", 只更新和插入非NULL值 NOT_EMPTY(2): &quo

  • 详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法

    最近遇到了Mybatis-Plus updateById(),更新某一个字段为null,却发现没有更新成功,发现有一个博客记录挺好的.转载过来,方便自己看. 一.简介 因为最近在忙项目,好久都没有更新博客,最近在项目中刚好遇到一个问题,就是在使用MyBatis-Plus updateById(xxx)的时候,居然更新不了字符串或者null,本文分享两种解决方案,具体大家可以根据自己的需求选择一种方法解决. 二.原理 在实际项目中,难免更新的时候,有可能会把已有的值更新成空字符串或者null,但是

  • 解决mybatisPlus null 值更新的问题

    发现mybatisPlus会更新对象属性为null的值, 与field-strategy配置有关 mybatis-plus: global-config: db-config: field-strategy: not_null 在3.1.0版本中,其选择的值有 public enum FieldStrategy { IGNORED, NOT_NULL, NOT_EMPTY, DEFAULT; private FieldStrategy() { } } 我刚开始选择的是ignored,所以null

  • 解决mybatisPlus 中的field-strategy配置失效问题

    场景: 前端修改给后台传递了几个空字符串.后台使用mybatisPlus 作为dao层.结果发现空字符串也更新了,mybatisPlus 的field-strategy设置为 2 非空: 解决思路: 查看mybatisPlus 版本差异.发现field-strategy已经弃用,从3.1.2 后使用下面这几个配置对非空进行判断 insertStrategy 类型:com.baomidou.mybatisplus.annotation.FieldStrategy 默认值:NOT_NULL 字段验证

  • 使用res:bean属性复制避免null值覆盖版本

    目录 res:bean属性复制避免null值覆盖版本 前言 代码 copyBeanPropertiesIgoreNull BeanUtils.copyProperties解决null值覆盖 可以自己拓展一个方法,汇总值为null的数据 附demo: res:bean属性复制避免null值覆盖版本 前言 最近在设计通用的 Service 和 Controller 层 设计过程中涉及到实体对象(JPA)的更新操作 原因1:JPA 的 saveAndFlush 方法会将把 null 也更新上去 原因2

  • 解决Go语言数据库中null值的问题

    本文主要介绍如何使用go语言database/sql库从数据库中读取null值的问题,以及如何向数据库中插入null值.本文在这里使用的是sql.NullString, sql.NullInt64, sql.NullFloat64等结构体,为了方便书写,它们的泛指我会使用sql.Null***来表示 要点 从数据库读取可能为null值得值时,可以选择使用sql.NULL***来读取:或者使用IFNULL.COALESCE等命令让数据库查询值返回不为""或者NULL 若需要往数据库中插入

  • 解决JPA save()方法null值覆盖掉mysql预设的默认值问题

    目录 JPA save()方法null值覆盖掉mysql预设的默认值 覆盖原因 解决办法 data jpa动态插入(null为sql默认值,utime自动更新 ) JPA save()方法null值覆盖掉mysql预设的默认值 覆盖原因 save()方法在没有参数传进去的时候默认是null值,而mysql表中该字段设置为可以为null值,这时虽然我们设置了默认值,可null值还是会把默认值覆盖掉. 解决办法 将该字段设置为不允许null值即可,这样null值就会被替换为默认值. data jpa

  • 解决mysql使用not in 包含null值的问题

    注意!!! select * from user where uid not in (a,b,c,null); 这个sql不回返回任何结果.要避免not in的list中出现null的情况. 另外: –如果null参与算术运算,则该算术表达式的值为null.(例如:+,-,*,/ 加减乘除) –如果null参与比较运算,则结果可视为false.(例如:>=,<=,<> 大于,小于,不等于) –如果null参与聚集运算,则聚集函数都置为null(使用isnull(字段,0)等方式可以

  • 使用Mybatis-plus策略自动更新数据库时间失败问题解决

    引言 在mybatis项目中,我们一般会使用它的插件plus以扩充它的基本查询功能.另一方面,在阿里巴巴开发手册的规范中也提到,在数据库表创建的时候,一般会有一个create_time和update_time字段,它们的建表语句往往如下: 'create_time' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 'update_time' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE C

  • 解决mybatisplus MetaObjectHandler 失效的问题

    目录 一.什么是metaObjectHandler 二.失效场景及解决方案 一.什么是metaObjectHandler MetaObjectHandler接口是mybatisPlus为我们提供的的一个扩展接口,我们可以利用这个接口在我们插入或者更新数据的时候,为一些字段指定默认值使用方式如下: 1.在实体类上加入@TableField注解 @Getter @Setter public class AbstractBaseDO<T extends Model<T>> extends

  • MySQL中对于NULL值的理解和使用教程

    NULL值的概念是造成SQL的新手的混淆的普遍原因,他们经常认为NULL是和一个空字符串''的一样的东西.不是这样的!例如,下列语句是完全不同的: mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES (""); 两个语句把值插入到phone列,但是第一个插入一个NULL值而第二个插入一个空字符串.第一个的含义可以认为是"电话号码不

随机推荐