Java 使用其他映射器的Spring引导映射器
是否可以在mapstruct中使用不同的映射器? e、 我有这个制图器Java 使用其他映射器的Spring引导映射器,java,spring,mapstruct,Java,Spring,Mapstruct,是否可以在mapstruct中使用不同的映射器? e、 我有这个制图器 @Component @RequiredArgsConstructor public class ObjMapperImpl implements ObjMapper{ private final UserMapper userMapper; @Override public ObjDto daoToDto(Obj obj) { return ObjDto.builder()
@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的daotodo()的生成实现将调用UserMapper的daotodo(),由于属性名称不同,您只需指定从
fromDate
到date
的映射
@映射器(组件模型=“spring”)
公共类ObjMapper{
@映射(source=“fromDate”,target=“date”)
ObjDto daotodo(Obj Obj);
}
MapStruct在文档中有一整节介绍
如果要在映射器中使用其他映射器,则需要使用mapper\35; uses
e、 g
您可能应该为组件注释添加
component Model=“spring”)
。@Huu Phuong Vu感谢您为date添加解决方案,但它又如何呢.user(userMapper.daotodo(obj.getUser())
@MateuszSobczak将由MapStruct处理,生成的daotodo()ObjMapperImpl的
将调用UserMapperImpl的daotodo()
。@daniu谢谢,更新了我的答案
@Mapper(componentModel = "spring", uses = UserMapper.class)
public class ObjMapper{
@Mapping(source = "fromDate", target = "date")
ObjDto daoToDto(Obj obj);
}