Java mapstruct无法将模型的属性列表映射到字符串列表
如何将差异模型列表字符串映射到下面列出的模型代码 我的任务列表Java mapstruct无法将模型的属性列表映射到字符串列表,java,spring,spring-boot,spring-mvc,jdbc,Java,Spring,Spring Boot,Spring Mvc,Jdbc,如何将差异模型列表字符串映射到下面列出的模型代码 我的任务列表 @Getter @Setter private List<TaskGroupList> groupIds; 我的TaskListMapper.class public abstract List<TaskResponse> toAllTaskListResponse(List<TaskList> taskList); public-abstract-List-to-alltasklistre
@Getter
@Setter
private List<TaskGroupList> groupIds;
我的TaskListMapper.class
public abstract List<TaskResponse> toAllTaskListResponse(List<TaskList> taskList);
public-abstract-List-to-alltasklistresponse(List-taskList);
要映射到列表,我认为需要使用IterableMapping注释。请参阅下面的链接-
它有一个列表到列表转换的示例
@Mapper
public interface CarMapper {
@IterableMapping(numberFormat = "$#.00")
List<String> prices(List<Integer> prices);
}
@Mapper
公共接口卡马佩尔{
@IterableMapping(numberFormat=“$#.00”)
标价(标价);
}
因此,在您的场景中,可以使用注释。此外,由于存在列表对象列表,因此需要嵌套迭代,如下所示-
@IterableMapping(qualifiedBy = IterableMapping.class)
List<TaskResponse> toAllTaskListResponse(List<TaskList> taskList);
@IterableMapping(qualifiedByName = "taskGroup")
List<String> map(List<TaskGroupList> task);
@Named("taskGroup")
default String map(TaskGroupList t) {
return t.getOwnerId();
}
@IterableMapping(qualifiedBy=IterableMapping.class)
列表至所有任务列表响应(列表任务列表);
@IterableMapping(qualifiedByName=“任务组”)
列表映射(列表任务);
@命名(“工作组”)
默认字符串映射(TaskGroupList t){
返回t.getOwnerId();
}
要映射到列表,我认为需要使用IterableMapping注释。请参阅下面的链接-
它有一个列表到列表转换的示例
@Mapper
public interface CarMapper {
@IterableMapping(numberFormat = "$#.00")
List<String> prices(List<Integer> prices);
}
@Mapper
公共接口卡马佩尔{
@IterableMapping(numberFormat=“$#.00”)
标价(标价);
}
因此,在您的场景中,可以使用注释。此外,由于存在列表对象列表,因此需要嵌套迭代,如下所示-
@IterableMapping(qualifiedBy = IterableMapping.class)
List<TaskResponse> toAllTaskListResponse(List<TaskList> taskList);
@IterableMapping(qualifiedByName = "taskGroup")
List<String> map(List<TaskGroupList> task);
@Named("taskGroup")
default String map(TaskGroupList t) {
return t.getOwnerId();
}
@IterableMapping(qualifiedBy=IterableMapping.class)
列表至所有任务列表响应(列表任务列表);
@IterableMapping(qualifiedByName=“任务组”)
列表映射(列表任务);
@命名(“工作组”)
默认字符串映射(TaskGroupList t){
返回t.getOwnerId();
}
@Mapper(componentModel=“spring”)
公共接口CarListMapper{
@映射(source=“groupIds”、target=“groupIds”、qualifiedByName=“toGroupId”)
任务响应到任务响应(任务列表任务列表);
所有任务列表中的列表(列表卡片列表);
@命名(“toGroupId”)
静态列表到组ID(列表组ID){
返回groupIds.stream()
.map(taskGroupList->taskGroupList.getOwnerId()).collect(collector.toList());
}
}
它为我工作了@Mapper(componentModel=“spring”)
公共接口CarListMapper{
@映射(source=“groupIds”、target=“groupIds”、qualifiedByName=“toGroupId”)
任务响应到任务响应(任务列表任务列表);
所有任务列表中的列表(列表卡片列表);
@命名(“toGroupId”)
静态列表到组ID(列表组ID){
返回groupIds.stream()
.map(taskGroupList->taskGroupList.getOwnerId()).collect(collector.toList());
}
}
它对我有用谢谢你的回答,当我使用那个注释时,我有一个错误,上面写着;'@IterableMapping define中未定义nullValueMappingStrategy、'dategormat、'qualifiedBy'和'elementtargetType',至少其中一个'I已通过post更新。正如错误中提到的,需要一种策略。非常感谢,我认为它将在我有@AfterMapping注释的基础上工作,并给我一个错误。什么是最好的方法?你能发布你的相关代码吗?你得到的错误是什么?如果这回答了你的问题,请将其标记为答案。谢谢你的回答,当我使用注释时,我有一个错误,上面说;'@IterableMapping define中未定义nullValueMappingStrategy、'dategormat、'qualifiedBy'和'elementtargetType',至少其中一个'I已通过post更新。正如错误中提到的,需要一种策略。非常感谢,我认为它将在我有@AfterMapping注释的基础上工作,并给我一个错误。什么是最好的方法?你能发布你的相关代码吗?你得到的错误是什么?如果这回答了你的问题,请将其标记为答案。发布新答案发布新答案非常感谢你的回答。我很快就会采用这种方法:)非常感谢你的回答。我将很快使用这种方法:)
@Mapper(componentModel = "spring")
public interface CarListMapper {
@Mapping(source = "groupIds",target = "groupIds",qualifiedByName = "toGroupId")
TaskResponse toTaskResponse(TaskList taskList);
List<TaskResponse> fromAllTaskList(List<TaskList> carDtoList);
@Named("toGroupId")
static List<String> toGroupId(List<TaskGroupList> groupIds){
return groupIds.stream()
.map(taskGroupList -> taskGroupList.getOwnerId()).collect(Collectors.toList());
}
}