[英]Problem using Gradle and Mapstruct and Lombok and Spring Boot (No implementation for 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(),由于属性名称不同,您只需要指定从fromDate
到date
的映射。
@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.