解决mybatisPlus 中的field-strategy配置失效问题

2025-05-29 0 37

场景:

前端修改给后台传递了几个空字符串。后台使用mybatisplus 作为dao层。结果发现空字符串也更新了,mybatisplus 的field-strategy设置为 2 非空;

解决思路:

查看mybatisplus 版本差异。发现field-strategy已经弃用,从3.1.2 后使用下面这几个配置对非空进行判断

insertstrategy

类型:com.baomidou.mybatisplus.annotation.fieldstrategy

默认值:not_null

字段验证策略之 insert

说明:

在 insert 的时候的字段验证策略 目前没有默认值,等 {@link #fieldstrategy} 完全去除掉,会给个默认值 not_null 没配则按 {@link #fieldstrategy} 为准

#updatestrategy

类型:com.baomidou.mybatisplus.annotation.fieldstrategy

默认值:not_null

字段验证策略之 update

说明:

在 update 的时候的字段验证策略 目前没有默认值,等 {@link #fieldstrategy} 完全去除掉,会给个默认值 not_null 没配则按 {@link #fieldstrategy} 为准

#selectstrategy(since 3.1.2)

类型:com.baomidou.mybatisplus.annotation.fieldstrategy

默认值:not_null

字段验证策略之 select

说明:

在 select 的时候的字段验证策略: wrapper 根据内部 entity 生成的 where 条件 目前没有默认值,等 {@link #fieldstrategy} 完全去除掉,会给个默认值 not_null 没配则按 {@link #fieldstrategy} 为准

补充:mybatisplus中的field-strategy(字段更新插入策略):null值插入和更新问题

mybatisplus中null值插入和更新问题

配置mybatisplus的项目中,默认进行了不是全量更新的策略:not_null。

即在利用updatewrapper更新时,会做null判断,如果传参数为null,就不会更新。

在实际项目需求中可能配置全局更新策略为:not_null,但是某些场景更新时需要插入这个null值进行更新。如何解决这个问题呢?

实际项目解决方法示例一

实际项目中,配置文件中配置全局字段策略为not_null。

解决mybatisPlus 中的field-strategy配置失效问题

需求:实际项目中,apply_teacher字段当它为null时需要把null值更新进去。

困难:因为全局字段策略为not_null,所以默认不会更新null值进去。

解决方法:

利用条件构造器当值为null时set为null。

代码:

?

1

2
wrapper<stuapplyinfoentity> updatewrapper = new updatewrapper<>();

((updatewrapper) updatewrapper).set(saveapply.getapplyteacher() == null, "apply_teacher", null);

实际项目解决方法示例二

需求:state字段所有值都更新和插入。

困难:因为全局字段策略为not_null,所以默认不会更新null值进去。

解决方法:

在entity中设置state设置注解@tablefield(),配置fieldstrategy为ignored。意思是"忽略判断",所有值都更新和插入。

代码:

?

1

2
@tablefield(strategy = fieldstrategy.ignored, el = "state, jdbctype=varchar")

private string state;

field-strategy字段更新插入策略介绍

枚举类fieldstrategy源码

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20
public enum fieldstrategy {

/**

* 忽略判断

*/

ignored,

/**

* 非null判断

*/

not_null,

/**

* 非空判断

*/

not_empty,

/**

* 默认的,一般只用于注解里

* <p>1. 在全局里代表 not_null</p>

* <p>2. 在注解里代表 跟随全局</p>

*/

default

}

枚举类字段简介

ignored:“忽略判断”,所有字段都更新和插入。

not_null:“非 null 判断”,只更新和插入非null值。

not_empty:“非空判断”, 只更新和插入非null值且非空字符串。

default: 默认的,一般只用于注解里。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持快网idc。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://www.jianshu.com/p/aad7e0025f5a

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 解决mybatisPlus 中的field-strategy配置失效问题 https://www.kuaiidc.com/109420.html

相关文章

发表评论
暂无评论