我使用mapstruct将我的DTO映射到它对应的实体。
DTO 包含一个哈希映射变量,其条目应映射到特殊哈希映射实体的键和值变量。这就是为什么我用一个额外的方法描述这个映射,如下所示:
@Mapper
public interface MyMapper {
MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);
@Mapping(source = "myHashMap", target = "myHashMapEntityList", qualifiedByName = "mapMyHashMap")
MyEntity mapToEntity(MyDTO dto);
@Named("mapMyHashMap")
static List<myHashMapEntity> mapMyHashMap(final Map<String, String> myHashMap) {
...
}
}
这工作正常。我遇到的唯一问题是我不想映射哈希映射的所有条目。我只想映射条目,其键包含在列表键ToBe映射列表中
。虽然可以从 dto
构造此键到被映射列表
,但此变量不是 dto 的一部分。我想知道如何执行我的映射。
我的问题是:
是否可以在此MyMapper
接口内计算此keysToBeMappedList
,然后在方法内使用此列表?因为即使这是不可能的,并且我将keysToBeMappedList
作为dto的一部分,我仍然必须使用mapMyHashMap
中的
myHashMap来执行映射。我从未见过在这些mapstructhtml" target="_blank">方法中使用过多个变量。
我希望我想做的事情或多或少都清楚了。有人能帮忙吗?
可以向方法添加更多参数:
import org.mapstruct.Context;
@Mapper
public interface MyMapper {
MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);
@Mapping(source = "myHashMap", target = "myHashMapEntityList", qualifiedByName = "mapMyHashMap")
MyEntity mapToEntity(MyDTO dto, @Context List<String> keysToBeMappedList);
@Named("mapMyHashMap")
static List<myHashMapEntity> mapMyHashMap(final Map<String, String> myHashMap, @Context List<String> keysToBeMappedList) {
...
}
}
现在,映射到实体
方法的实现会将键映射到映射列表
传递给 mapMyHashMap
方法,但映射结构不会尝试将键映射到任何
映射。
您可以在此处找到有关@Context的更多信息。
可以使用表达式调用任何方法
MyEntity mapToEntity(MyDTO dto, List<String> list);
@Mapping(target = "name", expression = "java(mapMyHashMap(map, list))")
或者,如果您不需要配置它,只需在方法中对其进行硬编码并进行过滤即可
我不熟悉Mapstruct,在特定用例中遇到问题 因此,如果我的来源属性hotmail.com我的目标属性应该收到“个人”,如果我的来源facebook.com我的目标应该收到“公司”。 我想用表达法,但没法绕过它。我该怎么做?
我得到以下情况: 源类: null
问题内容: 我有一段使用环境变量的Java代码,代码的行为取决于此变量的值。我想用不同的环境变量值测试此代码。如何在JUnit中做到这一点? 我已经大致了解了一些在Java中设置环境变量的方法,但我对它的单元测试方面更感兴趣,尤其是考虑到测试之间不应相互干扰。 问题答案: 库系统Lambda具有设置环境变量的方法。 对于Java 5至7,库系统规则具有一个名为的JUnit规则。 完全公开:我是两个
我有一种情况,在一个DTO中有另一个DTO,我必须映射到它对应的实体。 我正在使用mapstruct,我已经有antherEntityMapper已经存在。 如何更改EntityMapper接口,以便我可以将一个另一个EntityDTO映射到另一个Entity? 谢谢
如果我想使用我自己的Spring启动项目作为对其他Spring启动项目的依赖。但是如果没有组件扫描,我的依赖项Restendpoint不会暴露。如何在添加到依赖项时像执行器一样自动暴露我的依赖项Restendpoint。 鉴于我把我的项目推到本地回购,并添加上述依赖关系 如果没有ComponentScan在依赖项中添加的项目其余endpoint不visible.How自动执行此操作
我正在使用MapStruct制作