mapstruct-在复杂对象上下文中可迭代到不可迭代

时间:2020-09-25 18:23:07

标签: java mapstruct

我目前正面临mapstruct,这是初学者的问题,其中一个是以下问题。

我确实知道示例建议:https://github.com/mapstruct/mapstruct-examples/tree/master/mapstruct-iterable-to-non-iterable

而且我确实知道通常要处理复杂的映射,但是我的头部映射确实遇到障碍,例如:

{{1}}

希望对象结构清晰。在源代码中有两个列表,应该为每个列表选择第一个元素。 mapstruct如何做到?

1 个答案:

答案 0 :(得分:2)

只需自己指定一个Mapping方法。 MapStruct可以承担大多数映射代码的负担,但是对于某些映射代码,您只需要提供一些帮助即可。这就是该示例试图演示的内容。

@Mapper
public abstract class MyMapper{

    @Mapping(target = "employee.mainAddress.address", source = "employee.registeredAddresses")
    abstract EmployeeDto map(Employee employee);
 
    // implement a concrete method yourself that MapStruct can recognise and call in its generated code
    AddressDto map(List<PrivateAddress> source) {

     // perhaps do some NPE checking, call MapStruct generated method below
     return map( source.get(0).get(0) );
  }

  // continue letting MapStruct do the bulk of the work
  abstract AddressDto map(Address source);

}
相关问题