Java 和 MapStruct

Java and MapStruct

我如何初始化字段中的列表并在此列表中添加一些值?

    @Mapper(componentModel = "spring")
public interface MapStructAdapter {

  @Mapping(source = "some", target = "some")
  @Mapping(expression = "java(new java.util.ArrayList<LegalEntity>())", target = "legalEntities")
  @Mapping(expression = "java(new my.some.package.LegalEntity())", target = "getLegalEntities().add()")
  @Mapping(source = "entityShortName", target = "legalEntities.legalEntity.shortName")
  Representative convert(Message message);
}

您应该能够在映射器中添加自己的转换方法。

https://mapstruct.org/documentation/stable/reference/html/#adding-custom-methods

示例,

@Mapper(componentModel = "spring")
public interface MapStructAdapter {

    @Mapping(source = "some", target = "some")
    @Mapping(source = "entityShortName", target = "legalEntities")
    Representative convert(Message message);

    default List<LegalEntity> toLegalEntities(String entityShortName) {
        LegalEntity legalEntity = new LegalEntity();
        legalEntity.setShortName(entityShortName);
        return Collections.singletonList(legalEntity);
    }
}

只需向您的映射器添加一个(工厂)方法。没有参数和 return 列表。可以是默认方法,也可以是s class 你@Mapper#uses

中的方法