原创

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);
    }
}
正文到此结束