mybatis-plus使用this.baseMapper.update和updateById更新null值不生效

这篇具有很好参考价值的文章主要介绍了mybatis-plus使用this.baseMapper.update和updateById更新null值不生效。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

mybatis-plus 在 serviceImpl 层可以直接使用 this.baseMapper.update 和 updateById ,
如果更新的字段值是null,这时候需更新为 null 的字段更新不成功。打印的 sql 也没有更新为 null 的字段。

原因:

Mybatis-Plus默认的更新策略设置的问题,Mybatis-Plus中FieldStrategy有三种策略:
  IGNORED:忽略。不管有没有有设置属性,所有的字段都会设置到insert语句中,如果没设置值会更新为null;
  NOT_NULL:非 NULL,默认策略。也就是忽略null的字段,不忽略"";
  NOT_EMPTY:非空。为null,为空串的忽略,就是如果设置值为null,“”,不会插入数据库;

解决:
1)当需要设置可能为null的字段,需要用 lambdaUpdate()
使用方法为:

        this.lambdaUpdate()
            .set(对象::get字段名, 需要修改为什么样的值)
            .eq(对象::get条件字段名, 条件满足这个值)
            .update(new 对象());
            
      // 举个例子
            this.lambdaUpdate()
            .set(User::getName(), name)
            .eq(User::getUserId, userId)
            .update(new User());

或者文章来源地址https://www.toymoban.com/news/detail-542478.html

  sysUserService.update(null, new LambdaUpdateWrapper<SysUser>()
                .eq(SysUser::getUsername,username)
                .set(SysUser::getName,null)
                .set(SysUser::getPassword,null)
        );

  1. 实体类需更新的字段上 加注解
    @TableField(updateStrategy = FieldStrategy.IGNORED)
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
private String name;

单个的例子:

@TableField(updateStrategy = FieldStrategy.IGNORED)
private String username;

到了这里,关于mybatis-plus使用this.baseMapper.update和updateById更新null值不生效的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • MyBatis-Plus 更新(update)方法,属性参数为空时进行更新与不进行更新的设置

    解决方案: 在实体类上使用@TableField注解 FieldStrategy的源码中,一共有4种策略类型。 附上mybatis-plus官网链接地址: https://baomidou.com/pages/223848/#fieldstrategy 有兴趣的小伙伴可以点击看看

    2024年02月11日
    浏览(78)
  • 关于Mybatis Plus中BaseMapper和IService

    BaseMapper是Mybatis Plus提供的基础Mapper接口。它提供了常见的CRUD操作方法,如插入、修改、删除和查询等。BaseMapper是一个通用接口,可以适用于各种实体类的操作。这减少了开发人员需要编写的代码量,提高了开发效率。 IService是Mybatis Plus提供的服务接口。它提供了一些高级的

    2024年02月08日
    浏览(67)
  • 当mybatis-plus遇到这个报错的时候Update your application’s configuration. The following values are valid: 本人亲测,

    当mybatis-plus遇到这个报错的时候Update your application’s configuration. The following values are valid: 本人亲测,已经解决问题啦~ 检查代码的application.yml 这个文件是否有这个配置 如果这个配置的话,就直接删掉,这样项目就不会报错啦~

    2024年01月21日
    浏览(46)
  • 【MyBatis-Plus】MyBatis进阶使用

    目录 一、MyBatis-Plus简介 1.1 介绍 1.2 优点 1.3 结构 二、MyBatis-Plus基本使用 2.1 配置 2.2 代码生成 2.3 CRUD接口测试 三、MyBatis-Plus策略详解 3.1 主键生成策略 3.2 雪花ID生成器 3.3 字段自动填充策略 3.4 逻辑删除 四、MyBatis-Plus插件使用 4.1 乐观锁插件 4.1.1 什么是乐观锁和悲观锁? 4.

    2024年02月04日
    浏览(49)
  • Mybatis-plus 使用

            mybatis-plus提供了 ·@TableName·, @TableId, @TableField, @TableLogic 四种注解,其含义分别为:  @TableName          @TableName(\\\"SPF_Require_Vehicle\\\")    用于声明当前class所对应数据库中的表,如果class的名字和表的名字完全相同,则不需要添加该注解,如果不一样,则需要用该注解进

    2024年02月07日
    浏览(42)
  • mybatis-plus分页total为0,分页失效,mybatis-plus多租户插件使用

    背景:项目使用mybatis分页插件不生效,以及多租户使用时读取配置异常 多租户插件使用遇到的问题: 最开始在MyTenantLineHandler中使用 @Value(\\\"${tables}\\\"),服务启动时能从配置中心拉取到配置,但在运行时获取到的值为空,试了很多方法都不生效,后面将配置中心的配置在调用My

    2024年02月06日
    浏览(51)
  • Mybatis-plus的使用

    Mybatis-plus的使用 一、简介 Mybatis-plus的基于mybatis的,简化了单表mybatis的操作。 注意:它并没有提升性能,只是简化了开发过程。 二、在springboot中的基本使用 1、导入依赖 2、添加相应的数据库配置(application.properties) 3、在Application类上添加dao接口的路径扫描 4、编写实体类

    2024年02月09日
    浏览(40)
  • Mybatis-plus框架使用配置

    MyBatis-Plus(简称 MP)是一个基于 MyBatis 的增强工具,它对 Mybatis 的基础功能进行了增强,但未做任何改变。使得我们可以可以在 Mybatis 开发的项目上直接进行升级为 Mybatis-plus,正如它对自己的定位,它能够帮助我们进一步简化开发过程,提高开发效率。 Mybatis-Plus 其实可以看

    2024年02月09日
    浏览(39)
  • Mybatis-Plus使用方法

    MyBatis-Plus 提供了丰富的增强版的 CRUD 方法,使得开发者能够更简洁、高效地进行数据库操作。以下是如何使用 MyBatis-Plus 自带的增强版 CRUD 方法的基本步骤: 添加依赖 首先,确保你的 Maven 项目中已经添加了 MyBatis-Plus 的相关依赖,包括核心依赖和数据库驱动依赖。 xml复制代

    2024年04月11日
    浏览(44)
  • mybatis-plus与mybatis同时使用别名问题

    在整合mybatis和mybatis-plus的时候发现一个小坑,单独使用mybatis,配置别名如下: XML映射文件如下: 单元测试发现没有问题 添加mybatis-plus依赖后,单元测试报错: 显示无法解析XML映射文件中的student 解决办法:要把配置文件里的别名配置改成mybatis-plus的配置,如下: 区别

    2024年04月13日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包