beanutils.copyproperties忽略null
时间: 2023-08-15 11:07:57 浏览: 253
BeanUtils.zip
您可以使用BeanUtils.copyProperties方法的第三个参数来忽略源对象中的null值。该参数是一个ConvertUtils.Converter对象,用于在属性复制过程中进行类型转换。
以下是一个示例代码:
```java
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
public class Main {
public static void main(String[] args) throws Exception {
SourceBean source = new SourceBean();
source.setName("John");
source.setAge(25);
source.setEmail(null);
DestinationBean destination = new DestinationBean();
// 创建一个Converter对象,实现类型转换
Converter converter = new Converter() {
@Override
public Object convert(Class type, Object value) {
// 如果value为null,则返回空字符串
if (value == null) {
return "";
}
// 否则返回原始值
return value;
}
};
// 注册Converter对象
ConvertUtils.register(converter, String.class);
// 复制属性并忽略null值
BeanUtils.copyProperties(destination, source);
System.out.println(destination.getName()); // 输出:John
System.out.println(destination.getAge()); // 输出:25
System.out.println(destination.getEmail()); // 输出:(空字符串)
}
}
class SourceBean {
private String name;
private int age;
private String email;
// 省略getter和setter
}
class DestinationBean {
private String name;
private int age;
private String email;
// 省略getter和setter
}
```
在上述示例中,我们创建了一个Converter对象,并将其注册到ConvertUtils中。在转换过程中,如果源对象中的属性值为null,则Converter会将其转换为空字符串。这样,在属性复制过程中,目标对象中的对应属性将保持为空字符串而不是null值。
阅读全文