iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mybatis-plus使用this.baseMapper.update和updateById更新null值不生效
  • 438
分享到

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

mybatisjavamysql 2023-09-08 08:09:06 438人浏览 薄情痞子
摘要

mybatis-plus 在 serviceImpl 层可以直接使用 this.baseMapper.update 和 updateById , 如果更新的字段值是null,这时候需更新为 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());

或者

  sysUserService.update(null, new LambdaUpdateWrapper()                .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;

来源地址:https://blog.csdn.net/Little_Arya/article/details/129737960

您可能感兴趣的文档:

--结束END--

本文标题: mybatis-plus使用this.baseMapper.update和updateById更新null值不生效

本文链接: https://www.lsjlt.com/news/399544.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作