我最近阅读了一些关于 DTO 模式的内容。我明白它的目的;隔离内部人员并为客户创建合同。但是,我一直在思考如何有效地将它们映射到实体。
所以,假设我有 2 个 Dtos; CreatePostDto 和 ReadPostDto 可能在几个领域有所不同。现在,我想将它们映射到 PostEntity,这可以使用 modelmapper、mapstruct 等技术来完成。但是,将它们映射到服务层对我来说似乎不是很吸引我,因为代码往往会变得混乱。>
一种方法是创建一个通用的映射器抽象类并为特定的 dtos 提供实现。不过,我对这种方法持怀疑态度,因为我可能有很多 dto,即很多 postDto,这会导致许多映射器类。
有没有更好的方法来做到这一点?
答案 0 :(得分:1)
正如您提到的,如果您使用 Mapstruct,您可以为每个实体构建一个映射器类。 Mapstruct 将为您实现样板代码,您可以将所有相关映射分组。例如:
public interface PostMapper {
public PostEntity createPostDtoToPostEntity(CreatePostDto dto);
public PostEntity readPostDtoToPostEntity(ReadPostDto dto);
}
即使您的 Post DTO 不断增长,您仍然可以将它们分组到这个映射器类中。