将数据从Java Bean复制到另一个Java Bean

「爱情、让人受尽委屈。」 2022-06-06 07:57 299阅读 0赞

将数据从一个对象复制到另一个对象

使用Spring的BeanUtils

在开发中我们常会在对象之间设置属性值:

  1. Order order = new Order();
  2. order.setOrderAmount(orderDTO.getOrderAmount());
  3. order.setOrderStatus(orderDTO.getOrderStatus());
  4. order.setPayStatus(orderDTO.getPayStatus());

而使用Spring的
org.springframework.beans.BeanUtils类后,只需要一行代码即可将orderDTO对象的属性值赋值给order对象中对应的属性:

  1. BeanUtils.copyProperties(orderDTO, order);

以上赋值操作仅支持两个对象属性相同的情况。

使用Dozer

上一节的赋值操作方式仅支持两个对象属性相同的情况。

如果需要对复杂对象进行赋值或两个对象属性不相同的情况赋值,推荐使用Dozer库。

需要引入:

  1. <dependency>
  2. <groupId>com.github.dozermapper</groupId>
  3. <artifactId>dozer-core</artifactId>
  4. <version>6.2.0-SNAPSHOT</version>
  5. </dependency>

通过xml配置文件

  1. <mapping>
  2. <class-a>yourpackage.SourceClassName</class-a>
  3. <class-b>yourpackage.DestinationClassName</class-b>
  4. <field>
  5. <A>yourSourceFieldName</A>
  6. <B>yourDestinationFieldName</B>
  7. </field>
  8. </mapping>

通过注解

  1. public class SourceBean {
  2. private Long id;
  3. private String name;
  4. @Mapping("binaryData")
  5. private String data;
  6. @Mapping("pk")
  7. public Long getId() {
  8. return this.id;
  9. }
  10. public String getName() {
  11. return this.name;
  12. }
  13. }
  14. public class TargetBean {
  15. private String pk;
  16. private String name;
  17. private String binaryData;
  18. public void setPk(String pk) {
  19. this.pk = pk;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. }

然后

  1. SourceClassName sourceObject = ...
  2. Mapper mapper = DozerBeanMapperBuilder.buildDefault();
  3. DestinationObject destObject = mapper.map(sourceObject, DestinationClassName.class);
  4. assertTrue(destObject.getYourDestinationFieldName().equals(sourceObject.getYourSourceFieldName));

应用场景参考:
http://blog.csdn.net/zhousenshan/article/details/52904084

发表评论

表情:
评论列表 (有 0 条评论,299人围观)

还没有评论,来说两句吧...

相关阅读