为了账号安全,请及时绑定邮箱和手机立即绑定

FieldStrategy 会对 update 和 insert 造成影响,但对查询也造成影响的设计不合理

执行 baseMapper.updateById 方法时,如果想要允许某个字段被 set 为 null,则须设置该字段的 FieldStrategy 为 IGNORED,但这也产生了副作用,那就是通过实体类构造的 QueryWrapper 产出的 sql 的 where 子句带上了该字段为 null 的查询条件。

User 对象中的一个字段:

@TableField(strategy = FieldStrategy.IGNORED)
private String avatar;

然后查询:

userMapper.selectList(new QueryWrapper<>(user));

此时的 sql 语句将会像这样:

select * from user where avatar = null;

这个似乎无解?不知道是不是 mybatis-plus 本身在这里的设计不合理?

正在回答

1 回答

你好!

       你说的问题, Mybatis-Plus的作者也意识到了,所以在即将发布的3.1.2版本中,对这里进行了调整。在3.1.2中,全局配置中将新增三个配置:

      1、insertStrategy,在insert 的时候的字段验证策略;

      2、updateStrategy,在 update 的时候的字段验证策略;

      3、selectStrategy,在 select 的时候的字段验证策略。

     在即将发布的新版本中,通过这几个配置,就能解决你提到的这个问题。




0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

FieldStrategy 会对 update 和 insert 造成影响,但对查询也造成影响的设计不合理

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信