用mongoTemplate更新一个属性较多的实体类,如何避免写重复的条件,判断是否使用update方法去更新该字段?

(此描述是在java的springboot的环境下)就是在我更新一个会员对象时,会员的属性大概有20多个,添加会员的时候只要使用mongoTemplate的insert方法就能一次性插入。但是在更新操作的时候,可能只修改某几个字段,如果直接更新全部对象的话,前端传来的数据除了需要修改的字段,其他字段都为null,这时候数据库中就会造成文档数据的丢失,例如(会员user:属性有name和age)我只修改name属性为”李四“,age前端不传(也就是null),那么update的话,修改数据库数据就是name=李四 和age =null,这种情况。

于是我相出了一个最笨的方法,那就是去判断每个属性是否为null,这样能解决问题,但是会造成代码复杂,光属性就二三十。一大串。不知道怎么修改,希望解答,谢谢。

建议修改的时候前端把值全部传到后端,那样后端就不用判断哪些字段为空了,如果使用update,也是需要知道修改了哪个字段,并且这个字段不为空,也是需要判断的,所以还不如使用save,需要前端把所有入参值都传到后端,
update修改某个字段

  @Transactional(rollbackFor = Exception.class)
    public void updateUser(String id, User user) {
        Criteria criteria = Criteria.where("id").is(id);
        Query query = Query.query(criteria);
        Update update = new Update();
        // 修改特定字段
        update.set("phone", user.getPhone());
        update.set("username", user.getUsername());

        mongoTemplate.updateFirst(query, update, AuditDocSynonymGrpPoJo.class);
    }