JPA的更新操作——使用sava()方法完成更新操作

问题描述

修改更新数据库部分字段,用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));
    }
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨末..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值