假设我有以下课程:
public class A {
private String id;
private List<B> related;
}
public class B {
private String id;
private String name;
}
public class ADTO {
private String id;
private List<BDTO> relations;
}
public class BDTO {
private String identificator;
private String relatedName;
}
如何创建给定A对象类型的映射器,使我获得一个包含所有信息的ADTO对象?我必须创建两个不同的映射器?只能在一个映射器中完成吗?我认为可能是以下情况,但我不知道如何从列表中映射属性:
@Mapper
public interface MyMapper {
@Mappings({ @Mapping(source = "related", target = "relations") })
ADTO mapperA(A obj);
}
谢谢。
答案 0 :(得分:1)
尝试一下(未经测试,但应该可以正常工作)
映射列表时,您应该同时为class元素和列表创建一个映射,以映射列表中的所有元素
@Mapper
public interface MyMapper {
@Mappings({ @Mapping(source = "related", target = "relations") })
ADTO mapperA(A obj);
@Mappings(
{ @Mapping(source = "id", target = "identificator") },
{ @Mapping(source = "name", target = "relatedName") })
BDTO bDTOMapping(B b);
List<BDTO> bDTOListMapping(List<B> bList);
}