全局配置为 FieldStrategy.IGNORED,给部分字段增加 @TableField(strategy = FieldStrategy.NOT_NULL) 后,获取到的 strategy 还是 FieldStrategy.IGNORED。 查看源码,发现当 字段的 strategy 为 FieldStrategy.NOT_NULL 时,该字段的 strategy 会被设置为 globalConfig.getFieldStrategy()。

代码位置: com.baomidou.mybatisplus.entity.TableFieldInfo#TableFieldInfo line: 125

Comment From: qmdx

https://github.com/baomidou/mybatis-plus/commit/0d228a345a5c1187ce4d99d2e0fe86e7ef7e9b40

请关注下一版本发布

Comment From: jiangbin-github

该属性设值,其实不能满足某些情况下我要设置字段值为null,也就说某个字段在A业务场景需要设置为null,在B业务场景不需要设置为null。通过strategy 属性设值,其实是相违背的。

Comment From: miemieYaho

该属性设值,其实不能满足某些情况下我要设置字段值为null,也就说某个字段在A业务场景需要设置为null,在B业务场景不需要设置为null。通过strategy 属性设值,其实是相违背的。

你这种情况你自己写 xml 那不还得写两个嘛

Comment From: jiangbin-github

该属性设值,其实不能满足某些情况下我要设置字段值为null,也就说某个字段在A业务场景需要设置为null,在B业务场景不需要设置为null。通过strategy 属性设值,其实是相违背的。

你这种情况你自己写 xml 那不还得写两个嘛

目前通过条件构造器来处理,相当于手动写sql,可以满足上述业务场景。其实可以考虑下 提供两个方法,类似于updateByPrimaryKey(全字段更新)和updateByPrimaryKeySelective(不为空字段更新)

Comment From: miemieYaho

该属性设值,其实不能满足某些情况下我要设置字段值为null,也就说某个字段在A业务场景需要设置为null,在B业务场景不需要设置为null。通过strategy 属性设值,其实是相违背的。

你这种情况你自己写 xml 那不还得写两个嘛

目前通过条件构造器来处理,相当于手动写sql,可以满足上述业务场景。其实可以考虑下 提供两个方法,类似于updateByPrimaryKey(全字段更新)和updateByPrimaryKeySelective(不为空字段更新)

特殊要求使用 updateWrapper

Comment From: 1992mt

该属性设值,其实不能满足某些情况下我要设置字段值为null,也就说某个字段在A业务场景需要设置为null,在B业务场景不需要设置为null。通过strategy 属性设值,其实是相违背的。

你这种情况你自己写 xml 那不还得写两个嘛

目前通过条件构造器来处理,相当于手动写sql,可以满足上述业务场景。其实可以考虑下 提供两个方法,类似于updateByPrimaryKey(全字段更新)和updateByPrimaryKeySelective(不为空字段更新)

特殊要求使用 updateWrapper 可以考虑加Selective方法啊,不然手动写wrapper也就失去了快速便捷增强的初心了