当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot应用程序中使用mapstruct,用一个条件映射一个字段?

洪胜涝
2023-03-14
@Mappings({
        @Mapping(target = "id", source = "id"),
        @Mapping(target = "name", source = "name"),
        @Mapping(target = "detail", source = "detail"),
})
@Named("fromInfoToDetails")
abstract AccountDetails toDetails(AccountInfo from);

@IterableMapping(qualifiedByName = "fromInfoToDetails")
public abstract List<AccountDetails> toAccountDetails(List<AccountInfo> accountInfos);

现在,我想在AccountInfo中添加两个新字段:type(String)和isowner(Boolean);在如果isowner为true,则typefromAccountInfo将映射到typefrom如何修改上面的代码来映射这些字段?我只需要地图。

提前感谢!

共有1个答案

郑帅
2023-03-14

可以在默认方法或受保护方法中使用@BeforeMapping注释。

请参考:如何使用MapStruct1.2有条件地映射属性?

和mapstruct文档:https://mapstruct.org/documentation/stable/reference/html/#customizing-mappings-with-befor-and-after

 类似资料:
  • 我想用Kotlin中的Mapstruct将实体映射到带有嵌套DTO的DTO。 在Java中,这是这样的:。 应该如何使用Kotlin实现它?

  • 我把这三门课分别放在不同的文件中 我有下面的映射器 这目前仅映射lastName并起作用,我想将Book中的作者字符串映射为 我怎么能这么做?我在MapStruct文档中找不到任何东西。

  • 我想把一个模型对象映射到dto模型。我已经有一个对象的映射器。我如何在另一个类中的另一个映射器中重用这个映射器? 我有下面的模型 这是我的地图 我希望将History映射到HistoryDynamo并重用IdentifierMapper映射HistoryDynamo中的一个对象。如何在ToHistoryDynamo中使用toIdentifierDynamo?

  • 我在我的项目中使用了mapstruct,它可以直接工作(所有的mapper都在一个包中)。现在我有了将一个映射器移动到另一个包的要求,但这并不能很好地工作。 你能帮我解决这个问题吗? 编辑包结构1的结果CarMapperImpl.java:

  • 我已经为这些列表创建了模型类,这些列表是我收到的对我的服务的响应 清单1 清单2 列表3是最后的列表,上面两个列表映射的结果,即我的服务的响应 清单3 这些列表与用户名和用户标签相连。我已将列表1的所有值映射到列表3。现在对于列表2,我需要检查每个userLabel是否在list3中存在一个userName等于userLabel的对象,如果为true,则totalUsers的值设置为list3的那

  • 我有一个映射器,对于目标类的特定属性,需要从源对象内的对象列表中选择一个,并使用不同的映射器类对其进行映射。 简化了很多,类包含一个对象列表,我的类如下所示: 问题是,被生成为中的code>属性,但不是,因此生成失败,因为MapStruct找不到。 我最好的猜测是,这是由于在中没有其他方法显式地使用,因此Mapstrt决定不需要它,并且没有在实现中注入它。 那么,是否有任何方法可以强制MapSTR