专业的编程技术博客社区

网站首页 > 博客文章 正文

解决mybatis-plus修改数据库字段数据为NULL时失效的问题

baijin 2024-09-10 10:55:04 博客文章 7 ℃ 0 评论

目前,越来越多人选择mybatis-plus作为数据持久层的方案。在研发过程中有时候研发同学需要将数据库中的字段数据置为NULL的场景。这时候就有可能遇到赋值为null的字段不生效。

原因分析:

MyBatis-Plus采用了有三种字段验证策略:

  1. IGNORED(0): “忽略判断”, 所有字段都更新和插入
  2. NOT_NULL(1):“非 NULL 判断”, 只更新和插入非NULL值【默认】
  3. NOT_EMPTY(2):“非空判断”,只更新和插入非NULL值且非空字符串

没有对字段验证策略进行配置的时候,默认的方式是NOT_NULL。所以造成了NULL无法更新。

解决方法:

1.全局配置方式(不推荐)

在配置文件中添加:mybatis-plus.global-config.db-config.update-strategy=ignored

2.单字段推荐注解(推荐)

在数据库实体类的需要修改的字段上添加如下注解:

@TableField(value = "XXXX", updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.VARCHAR)

添加完配置后我们会发现该字段就能变为NULL了。但是没有需要修改的字段也被修改为了null。我们可以通过下面两种方案解决问题。

1.利用Wrappers.lambdaUpdate()解决问题

LambdaUpdateWrapper<UserVo> objectUpdateWrapper = Wrappers.lambdaUpdate();

objectUpdateWrapper.eq(UserVo::getId, 20);

objectUpdateWrapper.set(UserVo::getAddress, null);

mapper.update(null, objectUpdateWrapper);

2.执行的update的对象是先通过查询数据库得到的,然后对需要修改的字段赋值,最后使用update进行修改。【推荐】

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表