MapStruct Java:要列出的属性

MapStruct Java:要列出的属性,java,mapstruct,Java,Mapstruct,很快,我想将此代码移动到mapstruct映射器中: List proviciences=resultsetype.getResults().getResult().stream() .map(resultType->ResultTypeToProvinciaMapper.INSTANCE.resultTypeToProvincia(resultType)) .collect(Collectors.toList()); 我想要: List provinces=ResultTypeToProvi

很快,我想将此代码移动到mapstruct映射器中:

List proviciences=resultsetype.getResults().getResult().stream()
.map(resultType->ResultTypeToProvinciaMapper.INSTANCE.resultTypeToProvincia(resultType))
.collect(Collectors.toList());
我想要:

List provinces=ResultTypeToProvinciaMapper.INSTANCE.getList(resultSet);
细节 我的源类:

公共类resultsetype{
受保护的SearchRequestType请求;
受保护的结果;
受保护的长结果帐户;
保护长计数;
保护长startIndex;
受保护的长页面大小;
受保护的ResultSetType.Errors;
//接球手和接球手
}
其中,
结果
为:

公共静态类结果{
保护列表结果;
//接球手和接球手
}
ResultType

公共类结果类型{
受保护的字符串id;
保护字符串描述;
//接球手和接球手
}
My
服务
类正在从My
存储库
获取一个
ResultSetType
对象:

@服务
@所需参数构造函数
公共类ServeiTerritorialServiceImpl实现ServeiTerritorialService{
私人终审法院判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书判决书;
/**
*{@inheritardoc}
*/
@凌驾
public void getPaisos(){
resultsetype resultsetype=this.serveiTerritorialClientRepository.getOid(“2.16.724.4.400”);
//这里我需要将resultSetType映射到一个列表。。。
}
}
我需要将
resultsetype
映射到
List

因此,我需要将
resultsetype.results.result
映射到
List

首先,我创建了一个
mapper
,以便将
ResultType
映射到
Provincia

@Mapper
公共接口结果类型省级映射器{
ResultTypeTopProvinciaMapper实例=Mappers.getMapper(ResultTypeTopProvinciaMapper.class);
@映射(source=“id”,target=“code”)
@映射(source=“description”,target=“name”)
Provincia结果类型到Provincia(结果类型结果类型);
}
但是,我不太清楚如何从
resultsetype.results.result
List


有什么想法吗?

使用MapStruct,您可以定义不同iterable之间的映射。但是,您可以从嵌套列表映射到方法中的顶级列表(如果它是包装的,则可以)

在任何情况下,我建议采取以下措施:

@Mapper
public interface ResultTypeToProvinciaMapper {
    
    ResultTypeToProvinciaMapper INSTANCE = Mappers.getMapper(ResultTypeToProvinciaMapper.class);
    

    default List<Provincia> resultSetToListOfProvincia(ResultSetType resultSetType) {
        if (resultSetType == null) {
            return null;
        }

        Results results = resultSetType.getResults();

        if (results == null) {
            return null;
        }
        return resultTypesToProvincias(results.getResult());
    }


    List<Provincia> resultTypesToProvincias(List<ResultType> resultTypes);

    @Mapping(source = "id", target = "code")
    @Mapping(source = "description", target = "name")
    Provincia resultTypeToProvincia(ResultType resultType);

}
@Mapper
公共接口结果类型省级映射器{
ResultTypeTopProvinciaMapper实例=Mappers.getMapper(ResultTypeTopProvinciaMapper.class);
默认列表resultSetToListOfProvincia(ResultSetType ResultSetType){
if(resultsetype==null){
返回null;
}
Results=resultsetype.getResults();
如果(结果==null){
返回null;
}
返回resultTypesToProvincias(results.getResult());
}
列表结果类型省份(列表结果类型);
@映射(source=“id”,target=“code”)
@映射(source=“description”,target=“name”)
Provincia结果类型到Provincia(结果类型结果类型);
}