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);
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值