Comment utiliser une carte explicite avec Java 8 et ModelMapper?


J'apprends à utiliser ModelMapper par la documentation officielle http://modelmapper.org/getting-started/

Il existe un exemple de code pour le mappage explicite en utilisant java 8

    modelMapper.addMappings(mapper -> {
  mapper.map(src -> src.getBillingAddress().getStreet(),
      Destination::setBillingStreet);
  mapper.map(src -> src.getBillingAddress().getCity(),
      Destination::setBillingCity);
});

Comment utiliser ce code correctement? Lorsque je tape cet extrait de code dans ID, ID m'affiche le message 'impossible de résoudre la carte de méthode' entrez la description de l'image ici

Author: hudrogen, 2018-02-27

1 answers

Je pense que l'exemple appelle modelMapperce qui est en fait un TypeMap. Cela fonctionne:

ModelMapper modelMapper = new ModelMapper();
modelMapper.createTypeMap(Order.class, OrderDTO.class)
  .addMappings(mapper -> {
    mapper.map(src -> src.getBillingAddress().getStreet(), OrderDTO::setBillingStreet);
    mapper.map(src -> src.getBillingAddress().getCity(), OrderDTO::setBillingCity);
  });

Une autre façon sans lambdas serait de simplement donner au ModelMapper.addMappings()un PropertyMap. Pas un lambda mais assez court:

ModelMapper modelMapper = new ModelMapper();
modelMapper.addMappings(new PropertyMap<Order, OrderDTO>() {
  @Override
  protected void configure() {
    map().setBillingStreet(source.getBillingAddress().getStreet());
    map().setBillingCity(source.getBillingAddress().getCity());
  }
});
 4
Author: Bentaye, 2018-02-27 11:32:08