MybatisPlus中update()和updateById()怎么将字段更新为null
导读:本文共3152字符,通常情况下阅读需要11分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:问题描述用Mybatis-Plus的update()或者updateById()来更新数据时,无法将字段设置为null值(更新后数据还是原来的值)。原因概述默认情况下,Mybatis-Plus在更新时会判断字段是否为null,如果是null,则不设值(不将这个字段拼接为SQL的SET语句)。源码分析字段策略的源码:com.baomidou.mybatisplus.annotation.FieldS... ...
目录
(为您整理了一些要点),点击可以直达。用Mybatis-Plus的update()或者updateById()来更新数据时,无法将字段设置为null值(更新后数据还是原来的值)。
默认情况下,Mybatis-Plus在更新时会判断字段是否为null,如果是null,则不设值(不将这个字段拼接为SQL的SET语句)。
字段策略的源码:com.baomidou.mybatisplus.annotation.FieldStrategy
可以看到,FieldStrategy.DEFAULT:默认等于FieldStrategy.NOT_NULL,也就是:字段不为Null时才拼接SQL。
实际上,Mybatis-Plus在增删改查时默认对Null等情况都进行了判断。
源码里的注释已经很清楚了,本处不再赘述。源码位置:com.baomidou.mybatisplus.annotation.TableField
importjava.lang.annotation.*;
//其他代码
需求:根据用户id,设置userName(用户名),并将nickName(昵称)设置为null。
application.yml
field-strategy:0
注意
这是全局配置,会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null,可能会影响其他业务数据的正确性。
所以,尽量不要用此法。
方法
只在需要更新为null的字段上,设置忽略策略,如下:
更新的方法:
注意
不同的业务对字段的需求可能不一样,将字段指定为忽略判断(直接拼SQL)可能会影响其他业务。
MybatisPlus中update()和updateById()怎么将字段更新为null的详细内容,希望对您有所帮助,信息来源于网络。