MapStruct String to List映射

时间:2016-05-10 15:40:25

标签: java objectmapper mapstruct

如何将String映射到List和List to String?

考虑一下我们有跟随classess

class People{
    private String primaryEmailAddress;
    private String secondaryEmailAddress;
    private List<String> phones;
    //getter and setters
}

class PeopleTO{
    private List<String> emailAddress;
    private String primaryPhone;
    private String secondaryPhone;
    //getter and setters
}

在Dozer和Orika中,我们可以使用以下代码行轻松映射

fields("primaryEmailAddress", "emailAddress[0]")
fields("secondaryEmailAddress", "emailAddress[1]")

fields("phones[0]", "primaryPhone")
fields("phones[1]", "secondaryPhone")

我如何在MapStruct中进行相同类型的映射?我在哪里可以找到关于mapstruct的更多例子?

2 个答案:

答案 0 :(得分:10)

以下示例将emailAddressPeopleTO列表中的元素映射到primaryEmailAddress的{​​{1}}和secondaryEmailAddress属性。

MapStruct无法直接映射到集合,但它允许您实现在映射之后运行的方法以完成该过程。我使用了一种此类方法将People的{​​{1}}和primaryPhone属性映射到secondaryPhonePeopleTO列表的元素中。

phones

答案 1 :(得分:2)

我可以在这里看到一些例子:https://github.com/mapstruct/mapstruct-examples

查看此模块以了解您的具体要求(可转换为非Iterable):https://github.com/mapstruct/mapstruct-examples/tree/master/mapstruct-iterable-to-non-iterable

另一个在这里:http://blog.goyello.com/2015/09/08/dont-get-lost-take-the-map-dto-survival-code/

不确定是否可以将非迭代映射到Iterable。