首页 > 其他分享 >mybatisPlus注解fill = FieldFill.UPDATE和updateStrategy = FieldStrategy.IGNORED的坑

mybatisPlus注解fill = FieldFill.UPDATE和updateStrategy = FieldStrategy.IGNORED的坑

时间:2023-12-21 12:33:42浏览次数:34  
标签:IGNORED mybatisPlus UPDATE FieldFill 更新 null

由于当时使用mybatisPlus的updateById更新数据,习惯性的认为字段为null的不更新。但是上线后,出问题了。只更新状态字段,其他的一些属性竟然被置空了。

赶紧排查,发现实体类中这些字段有fill = FieldFill.UPDATE,导致更新的时候如果这个字段为null也会更新为null。

 同样作用的还有@TableField(updateStrategy = FieldStrategy.IGNORED)。

解决方法:

1.只更新状态字段改为用sql编写,不使用mybatisplus的updateById。

2.另外定义实体,去掉这些注解。

 

引申:

突然想起来,mybatis自动生成代码工具中,为什么mapper中会有updateByPrimaryKeySelective和updateByPrimaryKey这两种方法了,一个是全量更新,一个是选择性更新。

在使用mybatisPlus时候,会涉及到全量更新和选择性更新。平常使用实体中没有使用特定注解(FieldFill.UPDATE和FieldStrategy.IGNORED),会导致页面的属性值无法清空,比如Date和BigDecimal这些类型,空的时候是为null。

如果为null那么mybatisPlus默认是不会更新为null。所以页面中的属性值无法清空。

 

标签:IGNORED,mybatisPlus,UPDATE,FieldFill,更新,null
From: https://www.cnblogs.com/super-chao/p/17918374.html

相关文章

  • MybatisPlus
    Mybatis-Plus1.0简介MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为了简化开发、提升效率而生。MyBatis-Plus提供了通用的mapper和service,可以在不编写任何SQL语句的情况下,快速的实现对单表的CRUD、批量、逻辑删除、分页等操作官网:https://baomidou.......
  • MybatisPlus配置逻辑删除
    1、步骤1:配置逻辑删除的信息全局配置mybatis-plus:global-config:db-config:logic-delete-field:flag#全局逻辑删除的实体字段名(since3.3.0,配置后可以忽略不配置步骤2)logic-delete-value:1#逻辑已删除值(默认为1)logic-not-delete......
  • elasticsearch 文档更新操作:update和update_by_query
    API:(elasticsearch版本7.3)POST/<index>/_update/<_id>POST/<index>/_update_by_query1.POST/<index>/_update/<_id>支持脚本,可以更新、删除或跳过修改文档。更新文档部分内容,传递部分文档,将其合并到现有文档中。#测试--post/update脚本修改文档POST/king_test_p......
  • Springboot整合MybatisPlus
    1、引入mybatis-plus坐标<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version></dependency>2、配置数据源spring:datasource:use......
  • kettle更新组件(insert_update)
    2种装载方式:全量装载和增量装载插入更新与表到表区别:表到表:只追加数据,不管表里重不重复插入更新:对比关键字段,更新所有数据(不会删除)创建数据流:需求:表输入组件只是将数据追加装载到表中,并不是我们想要的更新数据:如下:插入/更新匹配关键字id=id保留关键字的字段,用来匹......
  • MySQL Update语句一个非常经典的“坑”
    起因最近好几次有开发同学在钉钉上问我,比如下图: 问题归纳起来就是:在MySQL里面update一条记录,语法都正确的,但记录并没有被更新…结论小结:在一条UPDATE语句中,如果要更新多个字段,字段间不能使用“AND”,而应该用逗号分隔。现象刚遇到这个问题的时候,我拿到这条语句直接在测试......
  • 使用 npm-check-updates 检查项目的 npm 依赖项是否有更新
    一、安装npm-check-updates:npminstall-gnpm-check-updates二、使用:在项目根目录运行以下命令,检查所有项目依赖项的最新版本:ncu执行结果如下:红色=主要升级青色=小幅升级绿色=补丁升级更新版本:ncu-u注意备份或者提交代码,确保包文件处于版本控制......
  • MybatisPlus中@TebleField注解的使用
    我们使用MybatisPlus框架操作数据库,一般有两种方式:一种是比较传统的方式,自己写Mapper.xml文件和SQL语句来操作数据库;另一种是使用MybatisPlus框架提供的BaseMapper或者IService接口中提供的增删改查方法。如果使用MybatisPlus中提供的BaseMapper和IService接口中的方法,就需要定......
  • select for update在springboot里实现分布式锁
    //mapper,注意,这里的参数最好就是主键或者唯一键,否则产生的是表锁@Select("<script>select*fromfoowhereid=#{id}forupdate</script>")FooselectForUpdateById(@Param("id")Longid);//service,必须加事物,否则selectForUpdateById无法实现分布式锁的作用@Transac......
  • F - Random Update Query
    F-RandomUpdateQueryProblemStatementYouaregivenanintegersequence$A=(A_1,A_2,\ldots,A_N)$oflength$N$.Wewillperformthefollowingoperationon$A$for$i=1,2,\ldots,M$inthisorder.First,chooseanintegerbetween$L_i$and......