mybatisPlus中的field-strategy(字段更新插入策略):null值插入和更新问题

目录

    • mybatisPlus中null值插入和更新问题
      • 实际项目解决方法示例一
      • 实际项目解决方法示例二
    • field-strategy字段更新插入策略介绍
      • 枚举类FieldStrategy源码
      • 枚举类字段简介

mybatisPlus中null值插入和更新问题

配置mybatisPlus的项目中,默认进行了不是全量更新的策略:NOT_NULL。
即在利用updateWrapper更新时,会做null判断,如果传参数为null,就不会更新。
在实际项目需求中可能配置全局更新策略为:NOT_NULL,但是某些场景更新时需要插入这个null值进行更新。如何解决这个问题呢?

实际项目解决方法示例一

实际项目中,配置文件中配置全局字段策略为NOT_NULL。
在这里插入图片描述
需求:实际项目中,apply_teacher字段当它为null时需要把null值更新进去。
困难:因为全局字段策略为NOT_NULL,所以默认不会更新null值进去。
解决方法:
利用条件构造器当值为null时set为null。
代码:

Wrapper<StuApplyInfoEntity> updateWrapper = new UpdateWrapper<>();
((UpdateWrapper) updateWrapper).set(saveApply.getApplyTeacher() == null, "apply_teacher", null);

实际项目解决方法示例二

需求:state字段所有值都更新和插入。
困难:因为全局字段策略为NOT_NULL,所以默认不会更新null值进去。
解决方法:
在entity中设置state设置注解@TableField(),配置FieldStrategy为IGNORED。意思是"忽略判断",所有值都更新和插入。
代码:

@TableField(strategy = FieldStrategy.IGNORED, el = "state, jdbcType=VARCHAR")
private String state;

field-strategy字段更新插入策略介绍

枚举类FieldStrategy源码

public enum FieldStrategy {/*** 忽略判断*/IGNORED,/*** 非NULL判断*/NOT_NULL,/*** 非空判断*/NOT_EMPTY,/*** 默认的,一般只用于注解里* <p>1. 在全局里代表 NOT_NULL</p>* <p>2. 在注解里代表 跟随全局</p>*/DEFAULT
}

枚举类字段简介

IGNORED:“忽略判断”,所有字段都更新和插入。
NOT_NULL:“非 NULL 判断”,只更新和插入非NULL值。
NOT_EMPTY:“非空判断”, 只更新和插入非NULL值且非空字符串。
DEFAULT: 默认的,一般只用于注解里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript变量声明语法的应用和分号讲究适用性

变量声明语法&#xff1a;var变量名&#xff0c;通常应用在语句的代码当中。在语句ECMAScript中必须与关键字var变量名之间至少有一个空格。(也就是变量名需要遵守一定的规范&#xff0c;至少不应该出现中文;如出现中文那就使语法中的语句代码不能相应连接到有关系地对数据处理…

SQL Server和MysQL中的联表更新sql示例

目录需求说明SQL Server中联表更新sql示例MySQL中联表更新sql示例需求说明 需求说明&#xff1a;把表B的报名号数据&#xff0c;更新到另一张表A的报名号列。通过表A证件号码和表B身份证号相等。 SQL Server中联表更新sql示例 UPDATE a SET a.bmhb.bmh FROM A aINNER J…

Mybatis中(#{ })模糊查询like(使用oracle的concat函数嵌套拼接SQL)

需求&#xff1a; 模糊查询需要左右各拼接一个’%’&#xff0c;如&#xff1a;like %key% 。 项目情况&#xff1a; mybatis中动态传参一般采用占位符#{key}。使用数据库&#xff1a;orecle。 错误的尝试&#xff1a; 尝试使用&#xff1a; like % #{key} %这样写不起作用…

linux构建主从域名服务器

实验步骤&#xff1a;一、构建主域名服务器1、安装域名服务&#xff08;BIND服务器软件包&#xff09;BIND软件包是目前Linux下使用最广泛的DNS服务器安装包&#xff0c;它可以运行到大多数UNIX服务器中&#xff0c;也包括Linux系统。RHEL4默认没有安装BIND服务器软件包&#x…

HashMap的put方法(Java7)和putVal方法(Java8)

目录数组链表&#xff1a;存在性能最坏情况O(n)Java7的HashMap的put方法思路数组链表红黑树&#xff1a;性能提高到O(logn)Java8的HashMap的putVal方法思路数组链表&#xff1a;存在性能最坏情况O(n) Java8以前&#xff0c;HashMap底层数据结构采用数组链表的结构。 数组特点&…

管道过滤器(Pipe-And-Filter)模式

按照《POSA(面向模式的软件架构)》里的说法&#xff0c;管道过滤器&#xff08;Pipe-And-Filter&#xff09;应该属于架构模式&#xff0c;因为它通常决定了一个系统的基本架构。管道过滤器和生产流水线类似&#xff0c;在生产流水线上&#xff0c;原材料在流水线上经一道一道的…

Java创建对象的方式——反序列化创建对象

目录Java创建对象的几种方式反序列化创建对象思路代码示例Java创建对象的几种方式 Java创建对象的方式共有4种。分别为&#xff1a; 1、通过new语句实例化一个对象。 2、通过反射机制创建对象。 3、通过clone()方法创建一个对象。 4、通过反序列化的方式创建对象。 思考&#…

redis知识归纳

目录Redis有哪些数据结构&#xff1f;有大量key需要设置同一时间过期&#xff0c;需要注意什么&#xff1f;Redis分布式锁怎么回事&#xff1f;假设Redis里有1亿个key&#xff0c;其中有10万个key是以同一个固定前缀开头&#xff0c;如何将它们全部找出&#xff1f;如何用Redis…

PCI_Express规范第七章解读-Software Initialization and configuration

7.Software Initialization and configuration PCI EXPRESS Configuration model 支持两种配置空间的访问机制&#xff1a; -PCI 兼容配置机制&#xff1a;100%的二进制兼容PCI 2.3中定义的&#xff0c;以及兼容早期的OS或类似的总线枚举和配置软件。 -PCI Express增强配置机制…

List「Object[]」转Map「Integer,String」处理

题目 有一个List<Object[]>&#xff0c;里面的元素分别是[1,“a”]&#xff0c;[2,“b”]&#xff0c;[1,“c”]&#xff0c;[2,“d”]…&#xff0c;请写一个函数将其转换为一个Map<Integer,String>&#xff0c;以List的Object[]第一个元素为关键字&#xff0c;将…

Asp.net基础概念之 事件

.NET Framework中的事件 事件体系结构 引发事件的对象叫做事件源。事件源发布它可以引发的事件。事件的类型总是委托类型&#xff0c;这个委托类型的签名定义了处理该事件的方法的签名。定义事件处理程序方法的对象称为事件接收方。事件接收方预订要在事件源上处理的事件事件接…

synchronized同步方法概述

synchronized同步方法 1、“线程安全”与“非线程安全”&#xff1a; 非线程安全情况&#xff1a;多个线程对同一个对象中的实例变量进行并发访问时&#xff0c;产生脏读。 解决方法&#xff1a;对实例变量的值进行同步处理。 2、方法内的变量为线程安全 3、实例变量非线程安…

as3:sprite作为容器使用时,最好不要指定width,height

官方解释&#xff1a; 除 TextField 和 Video 对象以外&#xff0c;没有内容的显示对象&#xff08;如一个空的 Sprite&#xff09;的高度为 0&#xff0c;即使您尝试将 height 设置为其它值&#xff0c;也是这样。 如果您设置了 height 属性&#xff0c;则 scaleY 属性会相应调…

1002 写出这个数 (20分)-Java

题目 读入一个正整数 n&#xff0c;计算其各位数字之和&#xff0c;用汉语拼音写出和的每一位数字。 输入格式&#xff1a; 每个测试输入包含 1 个测试用例&#xff0c;即给出自然数 n 的值。这里保证 n 小于 10 ​100。 输出格式&#xff1a; 在一行内输出 n 的各位数字之和…

成为LINUX系统管理员几点规则

要成为一名合格的LINUX管理员&#xff0c;一般来说都要懂得如下几点规则&#xff1a; 规则1&#xff1a;了解LINUX的一切。首先&#xff0c;在了解以下规则之前&#xff0c;笔者必须向大家说明的是&#xff0c;即使最基本的LINUX系统管理员都是要经过不断的学习和长时间实践才能…

Facebook图片存储架构技术全解析

Haystack提出了一种通用的基于HTTP的对象存储&#xff0c;它含有指针&#xff0c;映射到存储对象。在Haystack中以指针储存照片&#xff0c;把数以十万计的图像聚集到一个Haystack存储文件&#xff0c;从而消除了元数据负荷。这就使得元数据的开销非常小&#xff0c;并且使我们…

Shiro授权流程图

Shiro授权流程Shiro授权流程图Shiro授权流程图 根据Shiro授权流程&#xff0c;绘制流程图如下&#xff1a;

assert

[编辑本段]概述  Assert - 断言 编写代码时&#xff0c;我们总是会做出一些假设&#xff0c;断言就是用于在代码中捕捉这些假设&#xff0c;可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式&#xff0c;程序员相信在程序中的某个特定点该表达式值为真。可…

Shiro并发登录人数控制遇到的问题和解决

shiro并发登录人数控制遇到的问题和解决问题1:KickoutSessionControlFilter不起作用问题2:KickoutSessionControlFilter中cache为null空指针异常问题3:服务器重启后首页访问&#xff1a;subject.getPrincipal()报ClassCastException异常系统环境参考资料问题1:KickoutSessionCo…

新的网站上线 linux视野

开通了新的网站www.linuxsight.com会一直专注着Linux文章的写作转载于:https://blog.51cto.com/87243/354662