7

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

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

4

2 回答 2

9

您可以查看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

于 2011-06-23T19:01:18.890 回答
6

我们为我们的用例考虑了 mapstruct。请参阅下面的示例:

@Mapper
public interface MyMapper {

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

    To to(From from);

}

这是 MapStruct 与 Selma、Orika、ModelMapper、Dozer 和手动映射的性能比较:

手动映射 vs. Selma vs. MapStruct vs. Orika vs. ModelMapper vs. Dozer

Selma 与 MapStruct

于 2016-11-10T22:04:11.513 回答