我有两个类 - GeneralModel 和 HotelInfo,如下所示。 我想从 HotelInfo 映射到 GeneralModel && 从
List<HotelInfo>
映射到 GeneralModel 。
HotelDomain 的属性和名称与 HotelInfo 完全相同。
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GeneralModel {
private String identificationNo;
private List<HotelDomain> hotelDomains;
}
@Entity
@Table(name = "HOTEL_INFO", schema = "hotel")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@JsonIgnoreProperties(ignoreUnknown = true)
@ToString
public class HotelInfo {
@Id
private String id;
private String hotelName;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class HotelDomain {
private String id;
private String hotelName;
}
如何使用 MapStruct 编写用于以下转换的映射器。
GeneralModel listOfHotelInfoToGeneralModel(List<HotelInfo> hotelInfos);
&&
GeneralModel hotelInfoToGeneralModel(HotelInfo hotelInfo);
创建一个映射器接口,定义如下所示的映射方法
@Mapper
public interface HotelMapper {
HotelMapper INSTANCE = Mappers.getMapper(HotelMapper.class);
@Mapping(source ="hotelInfos", target = "hotalDomains")
GeneralModel listOfHotelInfoToGeneralModel(List<HotelInfo> hotelInfos);
@Mapping(source ="hotelInfo", target = "hotalDomains")
GeneralModel hotelInfoToGeneralModel(HotelInfo hotelInfo);
}
您可以通过如下所示的方法得到结果
GeneralModel = generalModel = HotelMapper.INSTANCE.listOfHotelInfoToGeneralModel(hotelInfos);
GeneralModel = generalModel = HotelMapper.INSTANCE.hotelInfoToGeneralModel(hotelInfo);