BeanUtils.copyProperties()vs DozerBeanMapper.map()

时间:2011-06-23 11:51:09

标签: java mapping dozer apache-commons-beanutils

当我需要映射所有字段和字段名称相同时,我使用BeanUtils.copyProperties()进行bean到dto映射。但我不需要在目标dto中映射源bean的所有字段,我使用DozerBeanMapper.map(),因为我不知道在这种情况下使用BeanUtils。

所以我认为这两种方法都有自己的功能,两者之间没有任何相似之处。我对吗?请指导我。

2 个答案:

答案 0 :(得分:7)

您可以查看ModelMapper。即使名称不完全相同,它也会智能地映射属性(字段/方法)。定义要映射或跳过的特定属性很简单,并使用实际代码而不是XML:

ModelMapper modelMapper = new ModelMapper();
modelMapper.addMappings(new PropertyMap<Order, OrderDTO>() {
  protected void configure() {
    map().setBillingStreet(source.getBillingStreetAddress());
    skip().setBillingCity(null);
  }
});

查看项目主页以获取更多信息:

http://modelmapper.org

答案 1 :(得分:4)

我们考虑使用了maptruct作为我们的用例。请参阅以下示例:

@Mapper
public interface MyMapper {

    MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);

    To to(From from);

}

以下是MapStruct与Selma,Orika,ModelMapper,Dozer和手动映射的性能比较:

Manual mapping vs. Selma vs. MapStruct vs. Orika vs. ModelMapper vs. Dozer

Selma vs. MapStruct