Spring Data Jpa的save方法更新未传值的字段被更新为空的处理方法

Spring Data Jpa的save()方法通过主键是否为空来判断insert或是update操作,但更新方法和以往使用的mybatis-plus存在一定的差异,特别记录处理方法。

java 复制代码
	@Resource
	private Dao dao;
	
    /**
     * 更新操作
     * @param data 前端传入存在更新的字段值的对象
     */
    public void update(ItemDo data) {
        //数据库查询当前id的数据
        ItemDo itemDo = dao.selectOne(data.getId());
        //创建一个新的对象
        ItemDo updateData = new ItemDo();
        //复制所有字段的值给新的对象
        BeanUtil.copyProperties(updateData, itemDo);
        //判断哪些字段需要更新并赋值,实现动态更新
        if(StrUtil.isNotEmpty(data.getDivide())){
            updateData.setDivide(data.getDivide());
        }
        if(StrUtil.isNotEmpty(data.getTitle())){
            updateData.setTitle(data.getTitle());
        }
        //更新操作
        dao.save(updateData);
    }
相关推荐
St_rive15 小时前
Page Object设计模式
java·开发语言·设计模式
风流 少年15 小时前
Spring AI 2.0:SSE
java·人工智能·spring
凤山老林16 小时前
精细化流量治理:Spring Boot 动态特性开关与灰度发布体系
java·spring boot·后端
Aphelios38018 小时前
一次锁内网络IO引发的Tomcat线程池“饿死”事故
java·开发语言·spring boot·elasticsearch·tomcat·网络io阻塞·线程池耗尽
不可求~18 小时前
C++ std::string_view 不是字符串:从悬空引用到安全用法
java·开发语言·c++
Lam Tang18 小时前
APS 系列文章10
java·代理模式
考虑考虑19 小时前
Excel导入时产生特殊字符处理
java·后端·java ee
Scabbards_19 小时前
面试Leetcode - Heap 堆
java·leetcode·面试
晚染烟19 小时前
每日八股day25
spring
程序员清风20 小时前
专业再升级!程序员专属显示器明基RD280UG上手实测!
java·后端·面试