BeanUtils工具对象拷贝copyProperties

    <1>  Spring提供一个非常好的对象复制方法copyProperties ,成员对象赋值是基于目标对象的成员列表,并且会跳过ignore的以及源对象中不存在的字段,这个方法是安全的,不会因为两个对象之间的结构差异导致错误,但是必须保证同名的两个成员变量类型相同。

a,b为对象,a对象或者b对象不能为null

BeanUtils.copyProperties(a,b);

org.springframework.beans.BeanUtils: a拷贝到b,

org.apache.commons.beanutils.BeanUtils: b拷贝到a 。

当a中不存在变量status时,b中存在为long类型的变量status时,执行的结果之后,b中的status会变成0,

查看源码如果来源属性值为null的话,long类型变量会设置默认值。

    <2>  BeanUtils.copyProperties()方法的限制

只有当两个类中的属性相同时才会进行拷贝,对不同属性的不做处理;

对java.util.Date类不支持,对java.sql.Date支持;

Interger,long类型默认值为null,使用方法后默认值为0,需要注意。

在使用BeanUtils.copyProperties拷贝字段之前,把一些常用的数字型的字段的默认转换值设置为null ,Interger,Long等字段为null的就不会默认转换成0了。apache.commons里面的包时可以使用转换器将Long,Interger等字段的默认值设置为null 。

static{
    ConvertUtils.register(new LongConverter(null),Long.class);
    ConvertUtils.register(new IntergerConverter(null),Integer.class);
}
发布了36 篇原创文章 · 获赞 19 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_27182767/article/details/91528038
今日推荐