mapstruct:如何根据数组字段将pojo转换为多个实体

nwlls2ji  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(462)

波乔:

public class TestDto {
    private List<String> idList;
    private String name;
}

实体:

public class Test {
    private String id;
    private String name;
}

如果 TestDtoidList1, 2, 3 , name 是 `` ,如何获得3个对应的 Test mapstruct实体?

dsf9zpds

dsf9zpds1#

mapstruct无法为您执行此Map。但是,您可以使用多个源属性来实现以下功能:
例如

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

}

相关问题