J'apprends à utiliser ModelMapper par la documentation officielle http://modelmapper.org/getting-started/
Il existe un exemple de code pour le mappage explicite à l'aide de Java 8
modelMapper.addMappings(mapper -> {
mapper.map(src -> src.getBillingAddress().getStreet(),
Destination::setBillingStreet);
mapper.map(src -> src.getBillingAddress().getCity(),
Destination::setBillingCity);
});
Comment utiliser correctement ce code? Lorsque je tape cet extrait de code dans IDE, IDE affichez-moi un message cannot resolve method map
Ils ont manqué une étape dans cet exemple, la méthode addMappings
qu'ils utilisent est la addMappings
de TypeMap , pas de ModelMapper
. Vous devez définir un TypeMap
un pour vos 2 objets. Par ici:
// 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);
});
Une autre façon serait d'utiliser la méthode addMappings
de ModelMapper
. Il n'utilise pas de lambdas et prend un PropertyMap . C'est assez court aussi:
ModelMapper modelMapper = new ModelMapper();
modelMapper.addMappings(new PropertyMap<Order, OrderDTO>() {
@Override
protected void configure() {
map().setBillingStreet(source.getBillingAddress().getStreet());
map().setBillingCity(source.getBillingAddress().getCity());
}
});