BeanUtils.copyProperties排除空值属性
时间: 2024-03-23 18:35:06 浏览: 137
BeanUtils.copyProperties方法是Apache Commons BeanUtils库中的一个工具方法,用于将一个Java对象的属性值复制到另一个Java对象中。默认情况下,该方法会将源对象的所有属性值复制到目标对象中,包括空值属性。
如果你想要排除空值属性,可以使用自定义的属性拷贝器(PropertyUtilsBean)来实现。以下是一种可能的实现方式:
1. 创建一个自定义的属性拷贝器类,继承自PropertyUtilsBean类,并重写copyProperties方法。
```java
import org.apache.commons.beanutils.PropertyUtilsBean;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.beanutils.DynaBean;
public class CustomPropertyUtils extends PropertyUtilsBean {
@Override
public void copyProperties(Object dest, Object orig) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(orig);
for (PropertyDescriptor origDescriptor : origDescriptors) {
String name = origDescriptor.getName();
if (PropertyUtils.isReadable(orig, name) && PropertyUtils.isWriteable(dest, name)) {
Object value = PropertyUtils.getSimpleProperty(orig, name);
if (value != null) {
PropertyUtils.setSimpleProperty(dest, name, value);
}
}
}
}
}
```
2. 在你的代码中使用自定义的属性拷贝器类进行属性拷贝。
```java
CustomPropertyUtils customPropertyUtils = new CustomPropertyUtils();
customPropertyUtils.copyProperties(destObject, sourceObject);
```
这样,只有源对象中非空的属性值才会被复制到目标对象中。
阅读全文