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);
    }
相关推荐
Java后端的Ai之路11 分钟前
【JDK】-JDK 17 新特性整理(比较全)
java·开发语言·后端·jdk17
小小小米粒15 分钟前
Spring Boot Starter ,不止是 “打包好配置的工具类包”
java·开发语言
用户83071968408241 分钟前
告别冗余!Spring Boot Web 入参转换 6 种玩法,@InitBinder 可以退休了
java·spring boot
树码小子44 分钟前
统一功能处理(1)拦截器
spring·拦截器
Desirediscipline1 小时前
#include<limits>#include <string>#include <sstream>#include <iomanip>
java·开发语言·前端·javascript·算法
lucky67071 小时前
Laravel 9.x LTS重磅升级:六大核心改进
java·php·laravel
人道领域1 小时前
MyBatis-Plus为何用JavaBean映射数据库表及乐观锁实战
java·开发语言·数据库
加洛斯1 小时前
RabbitMQ入门篇(1):初识MQ
java·后端
bai_lan_ya1 小时前
makefile通用解析
java·运维·数据库
小兔崽子去哪了1 小时前
百度智能云模型接入
java·openai