如何使用 MapStruct 从可迭代映射到不可迭代,反之亦然

问题描述 投票:0回答:1

我有两个类 - 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);

spring-boot mapstruct
1个回答
0
投票

创建一个映射器接口,定义如下所示的映射方法

@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);
© www.soinside.com 2019 - 2024. All rights reserved.