实体类之间属性复制问题(beanUtils、PropertyUtils工具类)

第一步:导依赖

<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.3</version>
</dependency>

第二步:
//把product 中的 属性 复制到 selectProduct中

PropertyUtils.copyProperties(selectProduct,product);

小结:该工具类性能方面差

beanUtils工具类
使用beanUtils拷贝属性的实体类需要有以下条件:

  1. BeanUtils解析的bean必须被public修饰
  2. bean必须提供空参的构造器
  3. 成员变量必须被private修饰
  4. 必须提供set get方法
  5. 两个拷贝类之间字段名一致

BeanUtils.copyProperties()和PropertyUtils.copyProperties()的差别:

  1. 效率由高到底:get/set 》PropertyUtils 》BeanUtils。
  2. BeanUtils.copyProperties()可以在一定范围内进行类型转换,同时还要注意一些不 能转换时候,会将默认null值转化成0;
    PropertyUtils.copyProperties()则是严格的类型转化,必须类型和属性名完全一致才 转化。
  3. 对于null的处理:PropertyUtils支持为null的场景;BeanUtils对部分属性不支持null,具体如下:
    a. java.util.Date类型不支持,但是它的自雷java.sql.Date是被支持的。java.util.Date直接copy会报异常;
    b. Boolean,Integer,Long等不支持,会将null转化为0;
    c. String支持,转化后依然为null。

猜你喜欢

转载自blog.csdn.net/KuKu_Nao/article/details/120160419