首页 > 解决方案 > 使用 mapstruct 将嵌套的 DTO 对象映射到单个项目列表

问题描述

我有一个带有嵌套对象的 DTO,我需要将其转换为列表。

这是总体思路(在 Kotlin 中):

DTO(来源):

class PersonDto {
    var name: NameDto,
    var otherField: String
}

目标:

class Person {
    var name: List<Name>,
    var otherField: String
}

其中目标中的名称应该只有一项:转换后的 NameDto。

我知道我可以做这样的事情:

fun nameDtoToNameList(nameDto: NameDto) : List<Name> {
     // a bunch of manual code to do the conversion
} 

但我很想知道是否可以自动进行转换。

理想情况下,会有一个解决方案可以使用 nameDtoToName 函数,该函数将在 NameMapper 接口中实现。

几个小时以来,我一直试图弄清楚如何做到这一点,但没有得到任何结果。任何帮助将非常感激。

标签: springspring-bootkotlinmapstructdata-transfer-objects

解决方案


您可以在字段上指定 @Mapping 并将映射设置为name.get(0).

请参阅此链接了解语法:https ://mapstruct.org/documentation/dev/reference/html/#basic-mappings


推荐阅读