当前位置: 首页 > 知识库问答 >
问题:

MapStruct:将属性提取到对象

段干宜
2023-03-14

我使用Mapstruct(1.2.0.final)来映射dto对象,我希望将对象的属性提取到它自己的对象实例。

@Data
public class ExternalResult {
    @JsonProperty("items")
    List<Item> items;
}
@Data
public class MyItem {
   String name;
}
@Mapper(componentModel = "spring")
public interface GraphhopperMapper {

    @Mappings({
        @Mapping(target = "??", source="items")
    })
    List<MyItem> mapItems(ExternalResult externalResult);

}

如何做到这一点?或者有没有更方便的方法来去掉只有一个属性的(无用的)对象?

提前谢了。

共有1个答案

孟永望
2023-03-14

在这种情况下,我建议您自己实现方法(例如,通过将映射器创建为抽象类),而不是让MapStruct为您完成:

List<MyItem> mapItems(ExternalResult externalResult) {
    return externalResult.getItems()
        .stream()
        .map(i -> new MyItem(i.getName())
        .collect(Collectors.toList());
}

MapStruct的想法是帮助您自动化90%的琐碎映射,但让您手写剩下的更多特殊情况,比如。

 类似资料:
  • 我需要将源类中的字段值映射到字段属性。我可以使用Mapstruct使用@mapper注释的'expression'参数来完成 有没有其他方法可以不使用“表达式”来进行映射?

  • 问题内容: 给定一个JavaScript对象: 如何有效地将内部对象提取到数组中? 我不需要维护 object [n] ID 的句柄。 问题答案:

  • 映射器类如下所示:

  • 我将xml字符串转换成一个simpleXMLElement对象使用simplexml_load_string其值print_r输出 如何从这个对象中提取节点和属性值?使用 要获取正文的内容,节点未输出任何值 更新: XML字符串 是否同时提取节点值和属性

  • 我在mapstruct映射器上遇到了问题。当运行mvn clean install(或mvn clean compile)时,我会得到以下错误: 问题是我不知道mapstruct从哪里获得这个“java.lang.Integer Architecture.Loads”。我不明白这个整数是从哪里来的,正如您在我的代码中看到的,没有整数。而且,到目前为止,我在使用类似的映射器时从未遇到过这个错误。 下

  • 是否有可能映射包的私有属性(不使用lombok)。我们成功地将包私有类映射到DTO,但为了成功映射属性,我们需要它们具有公共getter和setter。 我安慰自己,这个类仍然是包私有的,但在属性之前它是公开的:) 谢谢!亚历克斯。