mybatis-plus字段策略注解strategy

最近项目中遇到一个问题,是关于mybatis-plus的字段注解策略,记录一下。

1问题

调用了A组件(基础组件),来更新自身组件的数据,发现自己组件有个字段总是被清空。

2原因分析

调用的A组件的字段,属于基础字段,自己业务组件,对这个基础字段做了扩展,增加了业务字段。但是在自己的组件中的实体注解上,有一个注解使用错误。

mybatis-plus封装的updateById方法,如果实体类上没有添加策略注解,默认会对null字段加以判断,也就是说,如果传入的字段是null,mybatis-plus不会更新该字段的值。这是mybatis-plus的默认策略(默认对null传参的判断)。

一般想要把一个字段设置成null值,就需要像我上面截图这样,改变默认策略, 在实体类对应的字段上加注解@TableField(strategy=FieldStrategy.IGNORED),忽略null值的判断,也就是说,我就不在判断了,你传参是啥,我就更新成啥,传入了null,我就将该字段更新成null。

3总结

mybatis-plus的实体注解策略有三种:

NOT_NULL:默认策略,非NULL判断(判断传参为null时,不会更新该字段)

IGNORED:忽略判断(不去判断传参是否是null,如果传入null,就更新该字段值为null)

NOT_EMPTY:非空判断(如果传入的参数是“”空字符串或者null,不会插入数据库)

我看到网上有的解释更加直观:

ignored  不管有没有有设置属性,所有的字段都会设置到insert语句中,如果没设置值,全为null,这种在update 操作中会有风险,把有值的更新为null 

not_null,也是默认策略,也就是忽略null的字段,不忽略""

not-empty  为null,为空串的忽略,就是如果设置值为null,“”,不会插入数据库

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值