MapStruct:从具有复杂对象列表的对象进行映射
MapStruct: mapping from object with a list of complex object
假设我有以下 类:
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 对象类型 returns 我一个包含所有信息的 ADTO 对象?我必须创建两个不同的映射器?可以只在一个映射器中完成吗?我认为它会像下面这样,但我不知道如何从列表中映射属性:
@Mapper
public interface MyMapper {
@Mappings({ @Mapping(source = "related", target = "relations") })
ADTO mapperA(A obj);
}
提前致谢。
试试这个(未经测试但应该可以正常工作)
当您映射列表时,您应该为 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);
}
假设我有以下 类:
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 对象类型 returns 我一个包含所有信息的 ADTO 对象?我必须创建两个不同的映射器?可以只在一个映射器中完成吗?我认为它会像下面这样,但我不知道如何从列表中映射属性:
@Mapper
public interface MyMapper {
@Mappings({ @Mapping(source = "related", target = "relations") })
ADTO mapperA(A obj);
}
提前致谢。
试试这个(未经测试但应该可以正常工作)
当您映射列表时,您应该为 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);
}