Mybatis-Plus 全局Update更新策略,和insert插入查询策略

最近在使用mybatis-plus做项目的时候,发现使用updatById方法的时候,更新某个字段时候出现了问题,一般业务操作都是更新不为空的字段,结果发现更新了所有字段,这是由于mybatis-plus全局的更新策略导致的,我们可以通过相应全局配置来解决

Mybatis-Plus 全局Update更新策略,和insert插入查询策略


看官方文档可知,数据库全局配置策略有三种,分别是查询策略,更新策略,和添加策略

点击这里进入

全局数据库策略配置

配置

#全局策略 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添加值,如果我们字段是空字符串就会进行添加值操作,

我们也可以指定其他策略进行添加操作

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpxpy.html