Mapstruct:将集合映射到对象

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

我有一个这样的函数。

public HousesDTO mapHouses(Set<Home> roles) {
        HousesDTO homes = new HousesDTO();
        List<HouseDTO> dtos = new ArrayList<HouseDTO>();
        for (Home home : homes) {
            HouseDTO dto = new HouseDTO(home.getAddress(), home.getPrice());
            dtos.add(dto);
        }
          homes.setAllHomes(dtos);
          return homes;
        }
        return null;
    }

如何使用Mapstruct来实现这个功能?

collections mapping mapstruct
1个回答
0
投票

如果你的 HouseDTO 有一个无参数的构造函数和值的设置器,你可以这样做。

@Mapper
public interface HousesMapper {
    default HousesDTO toHouses(Set<Home> homes) {
        HousesDTO housesDTO = new HousesDTO();
        housesDTO.setAllHomes(toHousesList(homes));

        return housesDTO;
    }

    List<HouseDTO> toHousesList(Set<Home> homes);
}

如果 HouseDTO 只有一个期待属性的构造函数,剩下的选项有三个。

  1. 等待MapStruct 1.4的发布,它将支持构造函数的实例化。
  2. 创建一个默认的方法,从 HomeHouseDTO 手动
  3. 创建一个生成器,见 https:/mapstruct.orgdocumentationstablereferencehtml#mapping-with-builders。
© www.soinside.com 2019 - 2024. All rights reserved.