给定如下定义的Source类:
class Source{
private String name;
private int age;
private List<Phone> phones;
// getters and setters
}
和Phone类定义如下:
class Phone{
private Long id;
private String phoneNumber;
// getters and setters
}
和Target类定义如下:
class Target{
private String name;
private int age;
private List<Long> idsPhones;
// getters and setters
}
我的界面是:
@Mapper
interface MyMapper{
Target toTarget(Source source);
Source toSource(Target target);
}
如何将Source类中的电话列表映射到目标类中的idsPhones列表,反之亦然?
答案 0 :(得分:1)
为了实现这一目标,您需要通过告知如何从Phone
映射到Long
来帮助MapStruct。反之亦然。
您的映射器需要看起来像:
@Mapper(uses = PhoneRepository.class)
interface MyMapper {
@Mapping(target = "idsPhones", source = "phones")
Target toTarget(Source source);
@InheritInverseMapping
Source toSource(Target target);
default Long fromPhone(Phone phone) {
return phone.getId();
}
}
如果您的PhoneRepository
包含接受Long
并返回Phone
的方法,那么MapStruct将自动知道该怎么做并调用该方法。