首页 > 解决方案 > 地图结构列表列表

问题描述

我正在使用 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 ?

期待您的留言,谢谢。

标签: mapstruct

解决方案


我会尝试使用集合方法的默认实现来解决这个问题,并添加一个映射对象的方法。

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

推荐阅读