Ответ 1
В этом примере они пропустили шаг, метод, который они используют addMappings
, это addMappings
из TypeMap, а не из ModelMapper
. Вам нужно определить TypeMap
для двух ваших объектов. Таким образом:
// Create your mapper
ModelMapper modelMapper = new ModelMapper();
// Create a TypeMap for your mapping
TypeMap<Order, OrderDTO> typeMap =
modelMapper.createTypeMap(Order.class, OrderDTO.class);
// Define the mappings on the type map
typeMap.addMappings(mapper -> {
mapper.map(src -> src.getBillingAddress().getStreet(),
OrderDTO::setBillingStreet);
mapper.map(src -> src.getBillingAddress().getCity(),
OrderDTO::setBillingCity);
});
Другой способ - использовать метод addMappings
из ModelMapper
. Он не использует лямбды и принимает PropertyMap. Это тоже достаточно коротко:
ModelMapper modelMapper = new ModelMapper();
modelMapper.addMappings(new PropertyMap<Order, OrderDTO>() {
@Override
protected void configure() {
map().setBillingStreet(source.getBillingAddress().getStreet());
map().setBillingCity(source.getBillingAddress().getCity());
}
});