首页 > 其他分享 >MyBatisPlus_动态更新

MyBatisPlus_动态更新

时间:2023-06-14 12:00:30浏览次数:29  
标签:NULL mybatisplus column columnProperty 更新 FieldStrategy MyBatisPlus 动态

场景:项目整合了mybatisplus,进行update更新,前端传值为空时,数据库也进行了更新,导致原来的值丢失。

解决方案:在实体类上使用@TableField注解

/*
 联系人手机号码
*/
@TableField(updateStrategy = FieldStrategy.NOT_EMPTY)
private String phone;
这样,当前端传过来的 phone 参数为 null 或者空字符串,mybatisplus的更新就会拦截此字符串的更新。
FieldStrategy的源码中,一共有5种策略类型:
package com.baomidou.mybatisplus.annotation;

/**
 * 字段策略枚举类
 */
public enum FieldStrategy {
    /**
     * 忽略判断
     */
    IGNORED,
    /**
     * 非NULL判断
     */
    NOT_NULL,
    /**
     * 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
     */
    NOT_EMPTY,
    /**
     * 默认的,追随全局配置(未作任何修改的话默认就是IGNORED)
     */
    DEFAULT,
    /**
     * 不加入 SQL
     */
    NEVER
}

其实底层还是mybatis动态SQL的功能

<!--IGNORED,忽略判断-->
update table_a set column=#{columnProperty}

<!--NOT_NULL,针对非字符串-->
where <if test="columnProperty != null">column=#{columnProperty}</if>

<!--NOT_EMPTY,比NOT_NULL更强大-->
where <if test="columnProperty != null and columnProperty!=''">column=#{columnProperty}</if>

 

标签:NULL,mybatisplus,column,columnProperty,更新,FieldStrategy,MyBatisPlus,动态
From: https://www.cnblogs.com/danielzzz/p/17479828.html

相关文章

  • 实现小球在弹射前的拉伸特效和动态障碍物特效
    当前我们实现小球弹射时,会先用鼠标点击小球,然后移动鼠标,当松开鼠标时,小球会弹射向鼠标松开的位置。我们按住小球的时间越长,小球弹射的力度就越大,但有一个问题是,玩家并不知道,当前施加在小球上的推力有多大,这节我们就增加一个动画功能,当玩家在小球上点击鼠标时,小球前方会出现一个变动......
  • 一维动态规划-基础版
    问题描述一般来说,一维动态规划的问题,其输入的参数一般是$n$,而所求结果有点像数列$a_n$,或者说$f(n)$($f$可以认为是函数或者说对应关系),同时$a_n$与之前的$a_{n-1},a_{n-2},...a_{1}$有一个确定的对应的关系,例如$a_n=a_{n-1}+a_{n-2}$(斐波那契数列)解题步骤数列即可与编程......
  • 动态内存分配
    栈区:局部变量 函数的形式参数堆区:动态内存分配 malloc,free,calloc,realloc静态区:全局变量,静态变量,statint#include<stdlib.h>   malloc,free的头文件返回类型void*向内存申请空间malloc开辟空间 malloc(空间大小值 * sizeof())当动态申请的空间不再使用的时候 ......
  • uniapp 更新依赖到指定版本解决uniAPI不可用问题
    我解决的问题:在项目中使用uni.startLocationUpdate(OBJECT)报错:uni.startLocationUpdateisnotafunction 怀疑是版本问题,当时的版本......
  • andorid-动态选项菜单的实现
    andorid-动态选项菜单的实现 通过重载方法publicbooleanonPrepareOptionsMenu(Menumenu){}来实现。 @Override publicbooleanonCreateOptionsMenu(Menumenu){ returnsuper.onCreateOptionsMenu(menu); } @Override publicbooleanonPrepareOptionsMenu(Menume......
  • Python调用C/C++动态库
    一、编译C++代码并封装成动态库1、创建编译dll文件的项目,在上面的官网介绍的更详细,这里就不多做介绍了。注意在vs之中新建一个项目,项目选择动态链接库(DLL)2、2.在源文件中添加cpp文件并写好函数#include<iostream>#defineMATHLIBRARY_APIextern"C"__declspec(dllexport)......
  • windows更新失败
    由于配置WindowsUpdate失败,还原更改状态下无法正常关机,只能长按电源键关机后进入WinPE环境。进入WinPE环境,选择Dism++,如图第一列第三行。双击Dism++,选择操作系统后,打开会话。在左边列表找到更新管理,然后选择已安装的更新。这时我们可以看到更新状态分为3类,已安装、已固化和......
  • Linux系统下如果在编译时指定程序运行时动态链接库相对目录,及为程序收集默认不安装动
    1、在编译中指定编译的程序去查找的动态链接库目录qmake是这样指定运行时动态库目录的:  QMAKE_LFLAGS+=-Wl,-rpath=/usr/local/ultrasec/policyfilter/lib/ 2、用lddPROG  查看程序的动态链接库,如果没有的动态链接库,就从其它计算机或者网络上找这个库,然后拷贝到指......
  • java 代理(静态代理、动态代理的不同实现)详解及示例
    (文章目录)本文简单的介绍了java的代理概念,针对静态和动态代理的不同定义与实现方式,并给出了详细的示例,最后给出一个综合的应用,展示动态代理的使用。一、代理构成1、代理介绍代理模式上,基本上有Subject角色,RealSubject角色,Proxy角色。Subject角色负责定义RealSubject和Proxy......
  • 音乐编解码器的更新情况
    正文字数:2632阅读时长:4分钟在我最近关于高分辨率音频播放器以及为它们提供内容的服务和外部DAC和放大器的报道中,我意识到我向我的读者抛出了很多新的可能不熟悉的术语。自从我上一次深入介绍无损和有损音频压缩标准以来,已经有一段时间了,确切地说,是20年!而且世事变迁,所以这个简短的......