Java和MapStruct

问题描述 投票:0回答:2

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

    @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);
}
java spring mapstruct
2个回答
0
投票

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

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);
    }
}

0
投票

只需在映射器中添加(工厂)方法即可。没有参数并返回List。可以是默认方法,也可以是s类中的方法,您@ Mapper#uses

© www.soinside.com 2019 - 2024. All rights reserved.