BeanUtils copyProperties 过滤null记录下

来源:互联网 发布:淘宝店家花呗怎么开通 编辑:程序博客网 时间:2024/06/05 06:05
/** * Created by bls on 2016/6/16. */public class BeanUtils extends org.springframework.beans.BeanUtils {    public static void copyProperties(Object source, Object target) throws BeansException {        Assert.notNull(source, "Source must not be null");        Assert.notNull(target, "Target must not be null");        Class<?> actualEditable = target.getClass();        PropertyDescriptor[] targetPds = getPropertyDescriptors(actualEditable);        for (PropertyDescriptor targetPd : targetPds) {            if (targetPd.getWriteMethod() != null) {                PropertyDescriptor sourcePd = getPropertyDescriptor(source.getClass(), targetPd.getName());                if (sourcePd != null && sourcePd.getReadMethod() != null) {                    try {                        Method readMethod = sourcePd.getReadMethod();                        if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) {                            readMethod.setAccessible(true);                        }                        Object value = readMethod.invoke(source);                        // 这里判断以下value是否为空 当然这里也能进行一些特殊要求的处理 例如绑定时格式转换等等                        if (value != null) {                            Method writeMethod = targetPd.getWriteMethod();                            if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) {                                writeMethod.setAccessible(true);                            }                            writeMethod.invoke(target, value);                        }                    } catch (Throwable ex) {                        throw new FatalBeanException("Could not copy properties from source to target", ex);                    }                }            }        }    }}
1 0
原创粉丝点击