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

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

使用Spring的BeanUtils

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

Order order = new Order();
order.setOrderAmount(orderDTO.getOrderAmount());
order.setOrderStatus(orderDTO.getOrderStatus());
order.setPayStatus(orderDTO.getPayStatus());

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

BeanUtils.copyProperties(orderDTO, order);

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

使用Dozer

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

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

需要引入:

<dependency>
    <groupId>com.github.dozermapper</groupId>
    <artifactId>dozer-core</artifactId>
    <version>6.2.0-SNAPSHOT</version>
</dependency>

通过xml配置文件

<mapping>
  <class-a>yourpackage.SourceClassName</class-a>
  <class-b>yourpackage.DestinationClassName</class-b>
    <field>
      <A>yourSourceFieldName</A>
      <B>yourDestinationFieldName</B>
    </field>
</mapping>

通过注解

public class SourceBean {

    private Long id;

    private String name;

    @Mapping("binaryData")
    private String data;

    @Mapping("pk")
    public Long getId() {
        return this.id;
    }

    public String getName() {
        return this.name;
    }
}
public class TargetBean {

    private String pk;

    private String name;

    private String binaryData;

    public void setPk(String pk) {
        this.pk = pk;
    }

    public void setName(String name) {
        this.name = name;
    }
}

然后

SourceClassName sourceObject = ...

Mapper mapper = DozerBeanMapperBuilder.buildDefault();
DestinationObject destObject = mapper.map(sourceObject, DestinationClassName.class);

assertTrue(destObject.getYourDestinationFieldName().equals(sourceObject.getYourSourceFieldName));

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值