当我需要映射所有字段和字段名称相同时,我使用BeanUtils.copyProperties()
进行bean到dto映射。但我不需要在目标dto中映射源bean的所有字段,我使用DozerBeanMapper.map()
,因为我不知道在这种情况下使用BeanUtils。
所以我认为这两种方法都有自己的功能,两者之间没有任何相似之处。我对吗?请指导我。
答案 0 :(得分:7)
您可以查看ModelMapper。即使名称不完全相同,它也会智能地映射属性(字段/方法)。定义要映射或跳过的特定属性很简单,并使用实际代码而不是XML:
ModelMapper modelMapper = new ModelMapper();
modelMapper.addMappings(new PropertyMap<Order, OrderDTO>() {
protected void configure() {
map().setBillingStreet(source.getBillingStreetAddress());
skip().setBillingCity(null);
}
});
查看项目主页以获取更多信息:
答案 1 :(得分:4)
我们考虑使用了maptruct作为我们的用例。请参阅以下示例:
@Mapper
public interface MyMapper {
MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);
To to(From from);
}
以下是MapStruct与Selma,Orika,ModelMapper,Dozer和手动映射的性能比较: