[英]MapStruct String to List mapping
我如何将字符串映射到列表和列表到字符串?
考虑我们有以下类
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 的更多示例?
下面从图元素的示例emailAddress
列表中PeopleTO
到primaryEmailAddress
和secondaryEmailAddress
的性质People
。
MapStruct 不能直接映射到集合中,但它允许您实现在映射后运行的方法以完成该过程。 我已经用于映射一个这样的方法primaryPhone
和secondaryPhone
的性质PeopleTO
到的元素phones
列表中People
。
abstract class Mapper {
@Mappings({
@Mapping(target="primaryEmailAddress", expression="emailAddress != null && emailAdress.size() >= 1 ? emailAdresses.get(0) : null"),
@Mapping(target="secondaryEmailAddress", expression="emailAddress != null && emailAdress.size() >= 2 ? emailAdresses.get(1) : null"),
@Mapping(target="phones", ignore=true)
})
protected abstract People getPeople(PeopleTO to);
@AfterMapping
protected void setPhones(PeopleTO to, @MappingTarget People people) {
people.setPhones(new List<String>());
people.getPhones().add(to.primaryPhone);
people.getPhones().add(to.secondaryPhone);
}
}
我可以在这里看到一些例子: https : //github.com/mapstruct/mapstruct-examples
根据您的特定要求(可迭代到不可迭代)查看此模块: 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/
不确定是否可以将不可迭代映射到可迭代。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.