自定义开发-对象属性拷贝

2022-10-28  本文已影响0人  CoderInsight

1,工具类的特征

2,分析常见的集中对象拷贝的工具类

  • Apache BeanUtils
  • Spring BeanUtils
  • Cglib BeanCopier
  • Dozer
  • orika
  • MapStruct

在通常的业务中,如果不是说存在不同类型、不他那个字段名这样的情况可以直接使用Spring BeanUtils工具类,可以满足绝大多数场景,如果有特殊的需求的话,可以使用orika等重量级的工具,可以参考连接。

(1),Apache BeanUtils

<dependency> 
    <groupId>commons-beanutils</groupId> 
    <artifactId>commons-beanutils</artifactId> 
    <version>1.9.4</version> 
</dependency> 
// DTO 对象转化到 DO 对象
BeanUtils.copyProperties(studentDO, studentDTO); 

(2),Spring BeanUtils

这里只是针对实体类会生效,而针对List集合直接赋值的话会失败,可能还要进一步的处理。

这里是通过单独引用说明的,但是实际上在实际的springboot-start依赖的父依赖中是已经有这个类了,我们可以直接使用(待验证:但是在实际编程中确实没有明确的引入这个依赖,也是可以使用的)。

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-beans</artifactId> 
    <version>5.2.8.RELEASE</version> 
</dependency> 

注意:在复制对象的时候,顺序是A->B,则就是A复制到B。

// DTO 对象转化到 DO 对象
BeanUtils.copyProperties(studentDTO, studentDO); 

// 另外该方法还有一个重载的方法,即可以设置忽略不想复制过去的属性 
BeanUtils.copyProperties(studentDTO, studentDO,"name");

参考资料

1,七种对象复制工具类,阿粉该 Pick 谁?

上一篇 下一篇

猜你喜欢

热点阅读