假设我需要将两个对象映射成一个或一个对象映射成一个(重载)。我可以通过以下映射来实现:
@Mapper
public interface ThingMapper
{
@Mappings(
{
@Mapping(source = "createdDateTime", target = "thingDate"),
@Mapping(source = "approver.id", target = "approverId"),
})
ThingEventPayload toEventPayload(Thing thing);
// TODO this is redundant, how to clean up?
@Mappings(
{
// since there are two params, need to specifically map same-named params from source "thing" to target
@Mapping(source = "thing.id", target = "id"),
@Mapping(source = "thing.deletedDateTime", target = "deletedDateTime"),
@Mapping(source = "thing.version", target = "version"),
@Mapping(source = "thing.autoApproved", target = "autoApproved"),
@Mapping(source = "thing.resolvedDate", target = "resolvedDate"),
@Mapping(source = "thing.status", target = "status"),
// numerous other fields mapping from source "thing" to target with same property name
// map differently named parameters (duplicate of other mapper, above)
@Mapping(source = "thing.createdDateTime", target = "thingDate"),
@Mapping(source = "thing.approver.id", target = "approverId"),
// mapping second parameter "owner" directory to target "owner" property
@Mapping(source = "owner", target = "owner"),
})
ThingEventPayload toEventPayload(Thing thing, User owner);
}
是否有一种方法可以更改第二个映射器“先做第一个映射器”,然后应用@mapping(source=“owner”,target=“owner”)
的附加映射?
在这种情况下,您可以使用自定义方法。
例如
@Mapper
public interface ThingMapper {
@Mappings(
{
@Mapping(source = "createdDateTime", target = "thingDate"),
@Mapping(source = "approver.id", target = "approverId"),
})
ThingEventPayload toEventPayload(Thing thing);
UserPayload toUserPayload(User user);
default ThingEventPayload toEventPayload(Thing thing, User owner) {
ThingEventPayload eventPayload = toEventPayload(thing);
if (eventPayload != null) {
eventPayload.setOwner(toUserPayload(owner));
}
return eventPayload;
}
}
我有一个关于mapstruct中@ManyToOne映射的问题。我有两个表 第一个: 第二个是: 我有一个这样的箱子: 和MemberDto作为实体相同。 我需要使用mapstruct进行如下映射: 我需要填写名单成员;但我不明白怎么做。
我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好
Mapstruct在Spring-Boot rest api中使用一对多和多对一关系映射我的实体时遇到了一个问题。 我有下面的课 因此,当我在评论中添加私有UserDTO用户时;进入PolicyDTO和公共列表PolicyList;进入UserDTO 结果策略列出了所有字段中的值都可以,当然,除了两个注释字段。如果我用双向关系将这两个字段取消注释到DTO中,结果不仅在关系字段中是null,而且在所
我尝试使用MapStruct编写映射器类,如下所示: 目前它显示了“未知属性”“customer.customerid”和“usertypes.usertype.userid”等错误。有人能帮我用MapStruct映射所有这些元素吗? 问题2:我们如何绘制跟踪图?1)customerId usertypes->user->userid 2)pdtPrice offers->OffersType->
下面的例子中,我有一个单独的域层和一个单独的持久层。我使用Mapstruct进行映射,当从域映射到实体或从实体映射到域时,会出现堆栈溢出,因为双向引用总是被调用- 用于映射的类非常基本
我想将泛型类型<code>Y</code>的对象映射到另一个泛型类型为<code>X</code>的对象。在mapstruct中有这样的功能吗?或者我必须为通用映射编写自定义映射器吗?当我编译上面的代码时,会出现编译错误。