簡體   English   中英

Spring boot mapstruct mapper using other mapper

[英]Spring boot mapstruct mapper using other mapper

是否可以在 mapstruct 中使用不同的映射器? 例如我有這個映射器

@Component
@RequiredArgsConstructor
public class ObjMapperImpl implements ObjMapper{
    private final UserMapper userMapper;

    @Override
    public ObjDto daoToDto(Obj obj) {
        return ObjDto.builder()
                .meetLink(obj.getMeetLink())
                .date(obj.getFromDate().toLocalDate())
                .user(userMapper.daoToDto(obj.getUser()))
                .build();
    }
}

是否可以將此實現更改為mapstruct?

下面的代碼應該適合您,ObjMapper 的 daoToDto() 生成的實現將調用 UserMapper 的 daoToDto(),由於屬性名稱不同,您只需要指定從fromDatedate的映射。


@Mapper(component Model = "spring")
public class ObjMapper{

    @Mapping(source = "fromDate", target = "date")
    ObjDto daoToDto(Obj obj);
}

MapStruct 在文檔中有一個關於調用其他映射器的完整部分。

當您想在映射器中使用其他映射器時,您需要使用Mapper#uses

例如


@Mapper(componentModel = "spring", uses = UserMapper.class)
public class ObjMapper{

    @Mapping(source = "fromDate", target = "date")
    ObjDto daoToDto(Obj obj);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM