Java MapStruct:如何根据数组字段将POJO转换为多个实体
POJO:Java MapStruct:如何根据数组字段将POJO转换为多个实体,java,mapstruct,Java,Mapstruct,POJO: 如果TestDto的idList是1,2,3,name是abc,如何通过MapStruct获得3个相应的Test实体?MapStruct无法为您执行此映射。但是,您可以使用多个源属性来实现以下功能: e、 g @Mapper 公共接口测试映射器{ 默认列表映射(TestDto-dto){ if(dto==null | | dto.getIdList()==null){ 返回null; } List idList=dto.getIdList(); 列表测试=新的ArrayList(id
如果
TestDto
的idList
是1,2,3
,name
是abc
,如何通过MapStruct获得3个相应的Test
实体?MapStruct无法为您执行此映射。但是,您可以使用多个源属性来实现以下功能:
e、 g
@Mapper
公共接口测试映射器{
默认列表映射(TestDto-dto){
if(dto==null | | dto.getIdList()==null){
返回null;
}
List idList=dto.getIdList();
列表测试=新的ArrayList(idList.size());
for(字符串id:idList){
添加(map(id,dto);
}
回归测试;
}
测试映射(字符串id,TestDto-dto);
}
public class TestDto {
private List<String> idList;
private String name;
}
public class Test {
private String id;
private String name;
}
@Mapper
public interface TestMapper {
default List<Test> map(TestDto dto) {
if (dto == null || dto.getIdList() == null) {
return null;
}
List<String> idList = dto.getIdList();
List<Test> tests = new ArrayList<>(idList.size());
for (String id: idList) {
tests.add(map(id, dto);
}
return tests;
}
Test map(String id, TestDto dto);
}