我想将UserDTO和UserGroupDTO映射为其中用户具有地址的列表,其中用户具有所有地址字段,而用户组具有单独的地址字段。请让我知道如何映射这些字段。
答案 0 :(得分:0)
目前对此没有官方支持,但是有一种使用 expressions 的解决方法,如故障单中所述:https://github.com/mapstruct/mapstruct/issues/1321#issuecomment-339807380
这将适合您的情况:
@Mapper
public abstract class UserDTOMapper {
@Mapping( expression = "java(userDTO.getAddress().get(0))", target = "street")
@Mapping( expression = "java(userDTO.getAddress().get(1))", target = "zipCode")
@Mapping( expression = "java(userDTO.getAddress().get(2))", target = "country")
abstract public UserGroupDTO mapTo(UserDTO userDTO);
}
但是您必须确保实现为List的address属性将始终包含相同数量的字段并且顺序正确,否则基于list索引的映射将无法正常工作。