问题描述
修改更新数据库部分字段,用save()方法进行update操作,未修改字段默认为null。
Family表有id,name,remark,createTime等字段,只修改name和remark这两个字段
解决方法:
1.前端传来一个Family对象叫做resources
2.根据resources的id,拿到原始的family对象(修改前的Family对象);
3.使用自定义的copy()方法(使原来的family对象中的字段要修改的进行修改,未修改的保持不变)
@Override
@Transactional(rollbackFor = Exception.class)
public void update(Family resources) {
Family family = familyRepository.findById(resources.getId()).orElseGet(Family::new);
ValidationUtil.isNull(family.getId(),"Family","id",resources.getId());
family.copy(resources);
familyRepository.save(family);
}
使用hutool中的 BeanUtil.copyProperties()方法来封装我们的copy()方法
第一个参数代表前端传过来的对象,第二个参数代表原对象
public void copy(Family source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}