可以告诉 MapStruct 不执行自动映射吗?

pes*_*che 5 java object-object-mapping mapstruct

我有一个相当大的 bean(约 100 个属性)映射到几个较小的对象中。可能会出现较小的目标对象具有与我的源 bean 中名称相同但语义不同的属性。

我希望MapStruct在这种特定情况下只映射我使用@Mapping注释明确告诉的内容,而不执行通常的自动映射。

该MapStruct文档告诉我,仅此:

在生成的方法实现中,来自源类型 (...) 的所有可读属性都将被复制到目标类型 (...) 中的相应属性中。

我没有找到任何关闭此行为的配置选项。可以做到吗?

小智 8

@BeanMapping(ignoreByDefault = true)从 MapStruct 1.3 开始,可以通过映射方法注释关闭隐式字段映射。来自 MapStruct 1.3.1 参考指南:

通过 @BeanMapping(ignoreByDefault = true),默认行为将是显式映射,这意味着所有映射都必须通过 @Mapping 指定,并且不会针对缺少的目标属性发出警告。


Gun*_*nar 3

正如穆罕默德的评论中所述,您可以明确忽略这些属性。

正如你所描述的那样,没有开关。就我个人而言,我可能会手动编写特定的映射,而不是通过注释显式配置所有映射。当然,您仍然会从类型转换等中受益,因此它可能仍然是有益的,这实际上取决于您的用例。