背景:
最近在修改前人留下的坑,顺便记录一下。情况是这样,测试在进行填写一个字段的值保存之后,然后进行修改时,直接把原来的值去掉,不填任何值,出现了值根本没有变化。
过程:
经过各种排查之后,确定在这位同事直接用maybatis-plus自带的service的方式,使用了更新操作的方法,这里出现了问题。经过进一步跟踪之后,发现在字段上面没有设置关于字段属性为‘ null ’ 或者 为 “”时的相关策略,而mybatis-plus采用默认策略,忽略对null的校验,即""会更新,null不会更新,导致无法更新null, 即如果传过来的是“”就可以保存下,如果传过来的是null, 就会字段忽略掉不会进行更新。
解决方法:
在需要字段上加上@TableField(strategy = FieldStrategy.IGNORED)注解,就会忽略为空的判断,将该字段设置为null也会更新表中的数据。
PS:
mybatis-plus提供了四种策略:
IGNORED,忽忽略非空判断,null和""都不过滤
DEFAULT, 默认
NOT_EMPTY, 非空判断,为null,为空串的忽略,就是如果设置值为null,"",不会更新数据库
NOT_NULL, 非NULL判断,忽略null的字段,不忽略""
本文记录了一位开发者在处理MyBatis-Plus更新操作时遇到的问题,当字段值为空时,由于默认策略忽略null和空字符串,导致无法更新。解决方案是通过@TableField注解指定FieldStrategy.IGNORED策略,允许字段为null更新。此外,文章还介绍了MyBatis-Plus的四种更新策略:IGNORED、DEFAULT、NOT_EMPTY和NOT_NULL,并解析了它们在空值处理上的差异。
8841

被折叠的 条评论
为什么被折叠?



