java - 如何在 Java 8 和 ModelMapper 中使用 Explicit Map?

标签 java java-8 modelmapper

通过官方文档学习ModelMapper的使用http://modelmapper.org/getting-started/

有使用 java 8 显式映射的代码示例

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

如何正确使用这段代码?当我在 IDE 中键入此代码片段时,IDE 显示消息 cannot resolve method map

enter image description here

最佳答案

他们错过了这个例子中的一个步骤,他们使用的addMappings方法是来自TypeMapaddMappings ,而不是来自 ModelMapper。您需要为您的 2 个对象定义一个 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);
});

另一种方法是使用 ModelMapper 中的 addMappings 方法。它不使用 lambda 并采用 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());
  }
});

关于java - 如何在 Java 8 和 ModelMapper 中使用 Explicit Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49003929/

相关文章:

java - 使用 Java 关闭 Windows

java - BufferedReader 还不是 null .readLine() 返回 null

java - 使用 modelmapper 映射 2 个集合类型

java - GSON 不序列化/反序列化扩展类

java - 两阶段提交回滚

java - 使用可完成的 future 对方法运行基准测试

java - 在java中加入来自同一对象的2个流

java - 如何使用模型映射器将 2 个类映射到 Dto

enums - ModelMapper 不映射

java - Java 有没有办法从控制台调用方法?