java实体类 - 更新工具类(忽略为null的字段)
package com.lrw.book.util;
import java.beans.PropertyDescriptor;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
/**
*
* @ClassName: ObjectCopyUtil
* @Description: java实体类 - 更新用工具类(忽略为null的字段)
* @date: 2021年4月15日 下午10:54:38
* @Copyright:
*/
public class ObjectCopyUtil {
/**
*
* @Title: copyNullProperties
* @Description: 所有为空值的属性都不copy
* @param: @param source
* @param: @param target
* @return: void
* @throws
*/
public static void copyProperties(Object source, Object target) {
BeanUtils.copyProperties(source, target, getNullField(source));
}
/**
*
* @Title: getNullField
* @Description: 获取属性中为空的字段
* @param: @param target
* @param: @return
* @return: String[]
* @throws
*/
private static String[] getNullField(Object target) {
BeanWrapper beanWrapper = new BeanWrapperImpl(target);
PropertyDescriptor[] propertyDescriptors = beanWrapper.getPropertyDescriptors();
Set<String> notNullFieldSet = new HashSet<>();
if (propertyDescriptors.length > 0) {
for (PropertyDescriptor p : propertyDescriptors) {
String name = p.getName();
Object value = beanWrapper.getPropertyValue(name);
if (Objects.isNull(value)) {
notNullFieldSet.add(name);
}
}
}
String[] notNullField = new String[notNullFieldSet.size()];
return notNullFieldSet.toArray(notNullField);
}
}
正文到此结束