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 本身在这里的设计不合理?