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);
    }
相关推荐
你住过的屋檐1 天前
【Java】虚拟线程详解
java·开发语言
逍遥德1 天前
Maven教程.02-基础-pom.xml 使用标签大全
java·后端·maven·软件构建
甲枫叶1 天前
【claude热点资讯】Claude Code 更新:手机遥控电脑开发,Remote Control 功能上线
java·人工智能·智能手机·产品经理·ai编程
额,不知道写啥。1 天前
P5354 [Ynoi Easy Round 2017] 由乃的 OJ
java·开发语言·算法
让我上个超影吧1 天前
消息队列——RabbitMQ(高级)
java·rabbitmq
得物技术1 天前
Sentinel Java客户端限流原理解析|得物技术
java·后端·架构
PM老周1 天前
2026年软硬件一体化项目管理软件怎么选?多款工具对比测评
java·安全·硬件工程·团队开发·个人开发
一只大袋鼠1 天前
并发编程(三):线程快照统计・grep+awk+sort+uniq 实战详解
java·开发语言·多线程·并发编程
unfeeling_1 天前
Tomcat实验
java·tomcat
Hx_Ma161 天前
前台模块以及分页逻辑
java·开发语言