前言
最近在使用mybatis-plus
做项目的时候,发现使用updatById
方法的时候,更新某个字段时候出现了问题,一般业务操作都是更新不为空的字段,结果发现更新了所有字段,这是由于mybatis-plus全局的更新策略导致的,我们可以通过相应全局配置来解决
看官方文档可知,数据库全局配置策略有三种,分别是查询策略,更新策略,和添加策略
点击这里进入官方文档
全局数据库策略配置
配置
#全局策略
mybatis-plus.global-config.db-config.update-strategy=not_empty
mybatis-plus.global-config.db-config.insert-strategy=not_empty
mybatis-plus.global-config.db-config.select-strategy=not_empty复制
可选的配置值,看源码如下
package com.baomidou.mybatisplus.annotation;
public enum FieldStrategy {
IGNORED,
NOT_NULL,
NOT_EMPTY,
DEFAULT,
NEVER;
private FieldStrategy() {
}
}复制
IGNORED 忽略判断,所有字段都进行更新和插入 NOT_NULL只更新和插入非NULL值 NOT_EMPTY 只更新和插入非NULL值且非空字符串 NEVER 永远不进行更新和插入 DEFAULT 默认NOT_NULL
默认取值,看源码可知
public static class DbConfig {
private IdType idType;
private String tablePrefix;
private String schema;
private String columnFormat;
private String propertyFormat;
private boolean tableUnderline;
private boolean capitalMode;
private IKeyGenerator keyGenerator;
private String logicDeleteField;
private String logicDeleteValue;
private String logicNotDeleteValue;
private FieldStrategy insertStrategy;
private FieldStrategy updateStrategy;
private FieldStrategy selectStrategy;
public DbConfig() {
this.idType = IdType.ASSIGN_ID;
this.tableUnderline = true;
this.capitalMode = false;
this.logicDeleteValue = "1";
this.logicNotDeleteValue = "0";
this.insertStrategy = FieldStrategy.NOT_NULL;
this.updateStrategy = FieldStrategy.NOT_NULL;
this.selectStrategy = FieldStrategy.NOT_NULL;
}复制
默认取值配置都是NOT_NULL
更新策略配置
也就是我们在使用updateById()
方法时候,在没有指定更新策略时候使用默认策略,为NOT_NULL
,
也就是说当对象字段是NULL
的时候不会进行set更新,如果我们字段是空字符串就会进行set更新操作,
所以我们可以更改我们全局配置不为空not_empty
时候才更新
mybatis-plus.global-config.db-config.update-strategy=not_empty
复制
也可以在需要的字段中单独指定字段更新策略
/**
* 用户类型
*/
@TableField(value = "ADMIN_TYPE_ID",updateStrategy = FieldStrategy.NOT_EMPTY)
private String userType;复制
或者可以使用UpdateWrapper
方式替换updateById

添加策略
同理我们在进行inser
或者save
,方法时候,在没有指定更新策略时候使用默认策略,为NOT_NULL
,
也就是说当对象字段是NULL
的时候不会进行ins添加值,如果我们字段是空字符串就会进行添加值操作,
我们也可以指定其他策略进行添加操作
文章转载自猿小叔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1462次阅读
2025-03-13 11:40:53
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
745次阅读
2025-04-09 15:33:27
2025年3月国产数据库大事记
墨天轮编辑部
571次阅读
2025-04-03 15:21:16
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
498次阅读
2025-03-13 14:38:19
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
397次阅读
2025-04-01 20:42:12
优炫数据库成功应用于国家电投集团青海海南州新能源电厂!
优炫软件
361次阅读
2025-03-21 10:34:08
国产化+性能王炸!这套国产方案让 3.5T 数据 5 小时“无感搬家”
YMatrix
332次阅读
2025-03-13 09:51:26
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
315次阅读
2025-04-10 15:35:48
GoldenDB数据库社区正式上线!期待与您共享新知
GoldenDB分布式数据库
267次阅读
2025-03-12 14:06:39
从HaloDB体验到国产数据库兼容性
多明戈教你玩狼人杀
244次阅读
2025-04-07 09:36:17