beanutil.copyproperties 不忽略null赋值
时间: 2023-09-07 20:17:52 浏览: 81
是的,BeanUtils.copyProperties() 方法不会忽略 null 值,如果源对象的属性的值为 null,则目标对象的对应属性也会被设置为 null。如果你想在拷贝属性时忽略 null 值,可以使用 BeanUtilsBean.copyProperties() 方法,该方法支持自定义拷贝策略。在 BeanUtilsBean 中,你可以设置 ConvertUtilsBean 实例的转换策略,从而实现属性值的转换和忽略 null 值等功能。例如,可以通过设置 setNull(String value) 方法为 null 值指定一个默认值,如下所示:
```
ConvertUtils.register(new MyConvert(), String.class); // 注册自定义的转换器
// 创建 BeanUtilsBean 实例
BeanUtilsBean beanUtils = new BeanUtilsBean(new ConvertUtilsBean() {
@Override
public Object convert(String value, Class clazz) {
if (value == null) {
return "default";
}
return super.convert(value, clazz);
}
});
MyBean dest = new MyBean();
MyBean source = new MyBean();
source.setName(null);
source.setAge(18);
beanUtils.copyProperties(dest, source);
System.out.println(dest.getName()); // 输出:default
System.out.println(dest.getAge()); // 输出:18
```
在上面的例子中,我们自定义了一个 ConvertUtils 实例 MyConvert,将 null 值转换为默认值 "default"。然后,我们创建了一个 BeanUtilsBean 实例,并将 MyConvert 注册到 ConvertUtilsBean 中。在执行 copyProperties() 方法时,源对象的属性值为 null 的 name 属性被转换为了默认值 "default",而 age 属性的值则被成功地拷贝到了目标对象中。
阅读全文