BeanUtils.copyProperties () против DozerBeanMapper.map () - PullRequest
5 голосов
/ 23 июня 2011

Я использую BeanUtils.copyProperties() для привязки bean к dto, когда мне нужно сопоставить все поля и имена полей одинаковы. Но мне не нужно все поля исходного компонента для отображения в пункте назначения dto, я использовал DozerBeanMapper.map(), потому что я не представляю, как использовать BeanUtils в этой ситуации.

Так что я думаю, что оба метода имеют свою функциональность, и между ними нет никакого сходства. Я прав? Пожалуйста, ведите меня.

Ответы [ 2 ]

7 голосов
/ 23 июня 2011

Вы можете проверить 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

4 голосов
/ 11 ноября 2016

Мы рассмотрели mapstruct для нашего варианта использования.См. Образец ниже:

@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

Сельма против MapStruct

...