我有Object1和Object2。现在,我想映射对象3,属性来自1
比方说,我有两个目标:
1. User: {first_name, last_name, id}
2. Address: {street, locality, city, state, pin, id}
现在,有了这些,我想把它映射进去
User_View: {firstName, lastName, city, state}.
哪里,first_name
现在,我的问题是,怎么做?
然而,目前,我正在这样做
@Mapper
public abstract class UserViewMapper {
@Mappings({
@Mapping(source = "first_name", target = "firstName"),
@Mapping(source = "last_name", target = "lastName"),
@Mapping(target = "city", ignore = true),
@Mapping(target = "state", ignore = true)
})
public abstract UserView userToView(User user);
public UserView addressToView(UserView userView, Address address) {
if (userView == null) {
return null;
}
if (address == null) {
return null;
}
userView.setCity(address.getCity());
userView.setState(address.getState());
return userView;
}
}
但是,在这里,我必须在addressToView()中手动编写映射。
因此,有没有办法避免这种情况?
或者,处理此类情况的首选方式是什么?
使用MapStruct时,您缺少使用@Mapper注释的步骤。@Mapper将创建映射的实现。
您应该在此链接查看文档http://mapstruct.org/documentation/stable/reference/html/
具体来说
在本节中,您将学习如何使用MapSTRt定义bean映射器以及必须这样做的选项。3.1基本映射
要创建映射器,只需使用所需的映射方法定义Java接口,并用org对其进行注释。mapstruct。映射器注释:
@Mapper
public interface CarMapper {
@Mappings({
@Mapping(source = "make", target = "manufacturer"),
@Mapping(source = "numberOfSeats", target = "seatCount")
})
CarDto carToCarDto(Car car);
@Mapping(source = "name", target = "fullName")
PersonDto personToPersonDto(Person person);
}
@Mapper注释使MapStruct代码生成器在构建时创建CarMapper接口的实现。
您可以声明一个包含多个源参数的映射方法,并在@Map
注释中引用所有这些参数的属性:
@Mapper
public abstract class UserViewMapper {
@Mapping(source = "first_name", target = "user.firstName"),
@Mapping(source = "last_name", target = "user.lastName"),
public abstract UserView userAndAddressToView(User user, Address address);
}
由于“城市”和“州”属性名称在源和目标中匹配,因此无需映射它们。
有关更多详细信息,请参阅参考文档中的“定义映射器”一章。
下面是我的DTO。 源DTO 目标DTO
假设我有这样的映射: 现在,我需要将子列表映射到子列表,但它们都有相同的父对象。我希望这样做: 但不管用,有机会做吗?
给定: 我想把所有的车都标出来。将轮胎分为单独的轮胎板。我知道我可以做一个
假设我有以下课程:
我创建映射如下所示。如何将平面dto对象属性(街道、城市等)映射到域对象中的嵌套地址。当我试着去做的时候,我发现了一个错误: [错误]诊断:返回类型中的属性“Address.PostalCode”未知。@Mapping(来源=“City”,目标=“Address.City”), 还有类...
我试图使用MapStruct在dto和实体对象之间映射convert,但是生成的映射器实现只返回空的映射对象。 BeermapperImpl 任何人都可以提供我的代码可能出错的地方?谢谢!