mapstruct - 地图结构列表列表
问题描述
我正在使用 mapstruct 1.4.2.Final。我有一个这样的问题:
Business1 id 有许多 Business2 ids 关系。我想使用像 RelationDTO 这样的 DTO 来记录。
Class RelationDTO {
private Long id;
private Long business1Id;
private Long business2Id;
private String createUser;
private LocalDateTime createTime;
}
现在我有一个business1Id,和List business2IdList,想通过mapstruct创建List<RelationDTO>。
@Mapper(componentModel = "spring") 公共接口 RelationConverter {
@Mappings({
@Mapping(source = "business1Id", target = "business1Id"),
@Mapping(source = "createUser", target = "createUser"),
@Mapping(source = "createTime", target = "createTime")
})
List<RelationDTO> converteTo(List<Long> business2IdList, Long business1Id, String createUser, LocalDateTime createTime);
}
我的问题是如何编码,让 business2IdList 设置为 business2Id,然后创建 List ?
期待您的留言,谢谢。
解决方案
我会尝试使用集合方法的默认实现来解决这个问题,并添加一个映射对象的方法。
@Mapping(source = "business1Id", target = "business1Id")
@Mapping(source = "business2Id", target = "business2Id")
@Mapping(source = "createUser", target = "createUser")
@Mapping(source = "createTime", target = "createTime")
RelationDTO convertToRelationDto(Long business2Id, Long business1Id, String createUser, LocalDateTime createTime);
default List<RelationDTO> convertToRelationsDto(List<Long> business2IdList, Long business1Id, String createUser, LocalDateTime createTime) {
List<RelationDTO> relations = new ArrayList<RelationDTO>();
if (CollectionUtils.isEmpty(business2IdList)) {
return relations;
}
for (Long business2Id : business2IdList) {
relations.add(convertToRelationDto(business2Id, business1Id, createUser, createTime);
}
}
推荐阅读
- lisp - 格式化长字符串的奇怪行为
- python - 根据python中列的标签创建groupby
- vue.js - Vue Router如何加载第二个组件加载
- azure-devops - 浏览器堆栈配置任务 Azure 管道中的 URI 无效
- android - 如何在共享首选项中保存数据类型“整数”(可为空的 int)
- lua - 如何加载相对于当前加载的脚本的 lua 脚本?
- java - 302重定向加载空白页面
- algorithm - Ratcliff-Obershelp 字符串相似度
- android - 如何查找 Android 应用程序中是否正在使用 Java 包?
- ios - Safari bug - selenium Actions 点击方法