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);
    }
相关推荐
刃神太酷啦2 分钟前
Linux 基础 IO 收官:库的构建与使用、进程地址空间及核心知识点全解----《Hello Linux!》(11)
java·linux·c语言·数据库·c++·算法·php
猿小羽6 分钟前
Spring AI + MCP 实战:构建标准化、可扩展的 AI Agent 架构体系
java·spring boot·llm·架构设计·ai agent·spring ai·mcp
独自破碎E8 分钟前
Spring Boot的多环境配置
java·spring boot·后端
拽着尾巴的鱼儿10 分钟前
Idea-Spring-boot 项目启动无法识别lombok
java·intellij-idea
2301_7806698611 分钟前
单元测试、反射、注解、动态代理
java·单元测试
开开心心就好13 分钟前
视频伪装软件,.vsec格式批量伪装播放专用
java·linux·开发语言·网络·python·电脑·php
笨手笨脚の16 分钟前
深入理解 Java 虚拟机-02 对象
java·jvm·压缩指针·对象分配
Coder_Boy_16 分钟前
基于SpringAI的在线考试系统-数据库设计核心业务方案(微调)
java·数据库·人工智能·spring boot·领域驱动
yangminlei20 分钟前
Spring Boot 3 + Spring AI 实战:十分钟集成 OpenAI API 构建智能应用
java·openvino
是三好21 分钟前
java集合
java·开发语言