解决用MybatisPlus修改字段时会自动忽略传值为null的字段

这篇具有很好参考价值的文章主要介绍了解决用MybatisPlus修改字段时会自动忽略传值为null的字段。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

产生原因

我们使用mybatis-plus框架的时候会产生一个很尴尬的情况,在使用mybatis-plus的自带封装的update的方法的时候,如果你想要修改某个字段为null值,则会自动忽略修改你这个字段,导致这个字段还是原来未修改前的值 。

解决方法

根据查阅相关资料,总结出以下几点解决方法

1.在实体类需要插入null值的字段上加上@TableField(updateStrategy = FieldStrategy.IGNORED) 的注解,例如下:

@TableField(updateStrategy = FieldStrategy.IGNORED)
private BusinessCycle businessCycle;
 
   
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String openTime;
 
    
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String closeTime;

缺点:在你不需要修改这个值的时候,你这个值没有值时,也会修改为null值

2.重写mybatisPlus封装的update的方法,在需要传null值的字段加上以下操作,这是从其他的博文中找到的,自己没试过

UpdateWrapper<Student> stuUpdate = new UpdateWrapper<>();
stu.setStuGender(null);
stuUpdate.lambda().set(Student::getStuGender, stu.getStuGender()).eq(Student::getId, stu.getId());
studentService.update(stuUpdate);

缺点:相对来说较为繁琐,但解决了第一个方法出现的问题

3.在需要修改的实体类字段上加上@TableField(fill = FieldFill.INSERT_UPDATE)注解

@TableField(fill = FieldFill.INSERT_UPDATE)
private BusinessCycle businessCycle;
 
   
@TableField(fill = FieldFill.INSERT_UPDATE)
private String openTime;
 
    
@TableField(fill = FieldFill.INSERT_UPDATE)
private String closeTime;

方法从其他博文中获取到的方法,实际操作报错了,可能是自身原因,大家也可以试一下

总结

综上所述,第一种方法更加实用,但如果有产品硬性要求未修改这个字段,值不能为null时,建议用第二中方法进行处理文章来源地址https://www.toymoban.com/news/detail-589176.html

到了这里,关于解决用MybatisPlus修改字段时会自动忽略传值为null的字段的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mysql及Navicat中如何设置字段自动填充当前时间以及修改时间。

    ​该文章讲解了创建时间及修改时间如何通过函数自动填充,并演示了以下几种方式实现列自动填充创建时间及修改时间: 创建表时设置字段为自动更新时间列。 添加新字段为自动更新时间列。 更新已有字段为自动更新时间列。 通过navicat设置字段为自动更新时间列。 CUR

    2024年02月02日
    浏览(70)
  • Elasticsearch解决不能修改索引、字段问题解决方案

    问题1: 由于es索引不能删除,不能修改,在不影响原数据的情况下,并且生产服务不停机的情况下,怎么修改索引,并保留原索引内的数据? 基于kibanna的dev Tools执行参数,淘汰postman,kibanna会有提示 1、原来索引起别名job 2、重建索引,数据迁移,默认是同步执行大数据量太

    2024年02月12日
    浏览(45)
  • mybatisPlus查询排除某个字段

    在 MyBatis Plus 中,可以使用 @TableField 注解来排除某个字段在查询中的使用。@TableField 注解提供了一些属性可以用于指定字段的行为,其中 exist 属性可以控制字段是否在 SQL 语句中出现。 以下是一个示例代码,展示如何使用 @TableField 注解排除某个字段在查询中的使用: 在上述

    2024年02月12日
    浏览(59)
  • MybatisPlus如何完成字段类型转换

    先来回忆下在mybatis中的resultMap作用和是什么 在使用传统的mybatis时,我们一般都会在xml文件定义一个ResultMap 对每个字段都有自己的定义都有两个类型 javaType可以不显式写出来,mybatis可以根据指定的实体类推断出来 jdbcType 也就是对应到数据库中的字段类型 mybatis完成数据库的

    2024年02月04日
    浏览(85)
  • .net 6 使用 NEST 查询,时间字段传值踩坑

    说明: 同事搭建的业务系统,最开始使用  log4net  记录到本地日志. 然后多个项目为了日志统一,全部记录在  Elasticsearch  ,使用  log4net.ElasticSearchAppender.DotNetCore. 然后搭建了 Kibanal   对  Elasticsearch   进行查询.  但是项目组开发人员众多,不是每个人都想要学会如何在  Kibana

    2024年02月01日
    浏览(39)
  • 为什么创建 Redis 集群时会自动错开主从节点?

    哈喽大家好,我是咸鱼 在《一台服务器上部署 Redis 伪集群》这篇文章中,咸鱼在创建 Redis 集群时并没有明确指定哪个 Redis 实例将担任 master,哪个将担任 slave 然而 Redis 却自动完成了主从节点的分配工作 如果大家在多台服务器部署过 Redis 集群的话,比如说在三台机器上部署

    2024年02月10日
    浏览(35)
  • 成功解决Impala中修改parquet表的字段类型问题

    最近有个小伙伴在开发中遇到了 Impala 中修改 Parquet 表的字段类型问题,于是开启了问题解决之路。 这个小伙伴在 Impala 中对 Hive 的表进行了删除、修改字段类型等操作,等这些操作后去 Impala 去查询该表的时候,出现了如下的问题: 问题1: 问题2:

    2024年02月16日
    浏览(50)
  • Golang结构体中可忽略的字段用什么tag表示

    前言 在写项目的时候,需要实现一个搜索功能,可以通过不同的字段查询数据库中的东西,比如可以通过名字或者介绍或者分类进行查询,但是从前端传回到后端的数据中,需要忽略某些字段在查询中的作用(前端传回来为空的字段)。 于是就想到在结构体中使用tag来选择

    2024年02月16日
    浏览(36)
  • mybatisPlus返回Map类型的集合(两列字段,一列为key,一列为value)

    1、自定义实现该类 2、在抽象dao层书写返回map集合类型的方法 3、在XXXDao.xml文件中书写sql语句和resultMap类型 4、如何使用

    2024年02月13日
    浏览(74)
  • mybatis plus 查询数据库字段名自动添加下划线问题解决

    实体类和数据库中的字段名是一致的,但报错Unknown column \\\'dept_id\\\' in \\\'field list\\\',这是因为plus中的驼峰命名法,会自动添加下划线。 关闭驼峰式命名转换为下划线 在配置文件中加一个: 重新运行,就可以了! 报错信息如下: java.sql.SQLSyntaxErrorException: Unknown column \\\'dept_id\\\' in \\\'fi

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包