java jpa saveall方法优化_spring-data-jpa save进行修改优化

本文介绍了一种在 Spring Boot 应用中优化 Bean 属性复制的方法,通过自定义工具类实现忽略 null 值的属性复制。该方法提高了数据处理效率,避免了不必要的数据覆盖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境:maven 、spring boot、jdk1.8

一:工具类(更进beanutils.copyProperties中传递ingoreProperties数组):读取实例类不为null的属性

package cn.cqs.redisitem.utils;

import org.springframework.beans.BeanWrapper;

import org.springframework.beans.BeanWrapperImpl;

import java.beans.PropertyDescriptor;

import java.util.HashSet;

import java.util.Set;

/**

* @discription :

* @author: cqs

* @date: 2020-09-14 12:58

*/

public class BeanUtil {

/**

* 功能描述 :判断Entity属性不能null值的

*

* @param entity:

* @return java.lang.String[]

* @author cqs

* @date 2020/9/14

*/

public static String[] getNotNUllPropertyNames(Object entity) {

BeanWrapper beanWrapper = new BeanWrapperImpl(entity);

PropertyDescriptor[] propertyDescriptors = beanWrapper.getPropertyDescriptors();

Set set = new HashSet();

for (PropertyDescriptor pd : propertyDescriptors) {

Object propertyValue = beanWrapper.getPropertyValue(pd.getName());

if (propertyValue != null) {

set.add(pd.getName());

}

}

return set.toArray(new String[set.size()]);

}

}

二:实例类:

@Entity

@DynamicInsert

//@DynamicUpdate

public class SysUser {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Integer userId;

private Integer orgaztionId;

private String username;

private String password;

private String salt;

private Boolean locked;

省略getter/setter

}

三:测试类

@Test

void beanCoptyof() {

SysUser sysUser2 = new SysUser();

sysUser2.setUsername("caoqishun");

sysUser2.setPassword("cqs");

System.out.println("原对象---:"+sysUser2.toString());

SysUser sysUser3 = new SysUser();

sysUser3.setUsername("cqs11111111");

String[] strings = BeanUtil.getNotNUllPropertyNames(sysUser2);

BeanUtils.copyProperties(sysUser2,sysUser3,strings);

System.out.println("新对象集合---:"+sysUser3.toString());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值