【发布时间】:2020-01-14 05:08:01
【问题描述】:
我有 Pet、Dog 和 Cat 实体类。 Dog 和 Cat 类扩展了 Pet。
我还有用@JsonSubtype 注释的 PetDTO、DogDTO 和 CatDTO,所以 Jackson 可以很好地解析 dto 的类。
我想使用 MapStruct 编写一个映射器,它采用 PetDTO 实体(可以是 DogDTO 或 CatDTO)并返回 Dog 或 Cat。
在这种情况下,对我来说,使用映射库的主要目标是避免使用 instanceof 的糟糕代码。
有什么想法吗?谢谢!
【问题讨论】:
-
I want to write a mapper using MapStruct that takes a PetDTO entity (can be a DogDTO or a CatDTO) and returns a Dog or a Cat.- 你如何想象这样一个函数的签名? -
公共宠物地图(PetDTO){ ... }
-
为什么不将它们映射到单独的映射方法中呢?这背后是否有一些特定的业务需求?
-
控制器层中的端点接收 PetDTO。由于@JsonSubtype 中的元数据,Jackson 知道将其映射到 DogDTO 或 CatDTO。假设我在变量“petDTO”中有它。然后我必须将它映射到调用 Pet pet = mapper.map(petDTO) 的域模型中,所以它必须是一个方法。