Mapstruct:将集合映射到对象



我有一个这样的函数:

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做到这一点?

如果您的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. 创建一个默认方法,手动从Home映射到HouseDTO
  3. 创建生成器,请参见https://mapstruct.org/documentation/stable/reference/html/#mapping-与建筑商

相关内容

  • 没有找到相关文章

最新更新