Java MapStruct:如何根据数组字段将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

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(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);

}