我使用Mapstruct来处理将一个POJO映射到另一个POJO的样板代码。
以下是DTO:
import java.util.Collection;
public class TestTO {
String name;
Collection<AttributeTO> attributes;
}
这是映射的POJO:
import java.util.Map;
public class Test {
String name;
Map<String, Attribute> attributes;
}
我正在寻找一种优雅的方法来处理映射
和集合
之间的映射。目前,我正在使用@Mapping
注释的表达式
属性。由于Attribute
引用了Test
我使用的是“周期映射”示例中的cyclebrakingContext
。
@Mapping(target = "attributes", expression = "java(test.getAttributes().values().stream().map(a -> this.map(a, context)).collect(java.util.stream.Collectors.toList()))")
abstract TestTO map(Test test, @Context CycleBreakingContext context);
该界面还包含一个方法映射属性
到属性到
,名称为映射
。
有没有更优雅的方法来实现将不可编辑的映射
转换为集合
?我的方法可行,但也有缺点。例如,重构不能识别字符串中的代码片段。
默认映射器方法如何?
在mapper界面中,可以提供默认实现,指示MapStruct如何映射给定类型,例如:
default Collection<Integer> mapAttributes(Map<String, Integer> attributes) {
return attributes.values();
}
每当MapStruct试图从映射映射到集合时,就会调用此方法。
你可以随心所欲地定制它。
拥有Maapstruct映射接口和带有各种枚举的DTO。我有两个不同的枚举,它们的格式都是: 但它显然不知道要用参数字符串代码映射到的枚举。希望我能: 只做toEntity(fromDto)和toDto(fromStringCode,forDtoTypeAndFile) 只为每个类型添加代码,而不为每个源/目标添加代码
我提到了用Mapstruct将多个源字段映射到同一类型目标字段的问题,但这没有帮助 我的rest资源类如下所示 我的实体类是源代码,如下所示: 我想在mapper类中用emailAdddress或devices或mobileNumbers映射源类中的地址,我尝试在mapper类中使用@AfterMapping和一个decorator类,但它没有帮助。 我有一个像这样的映射器类
本文向大家介绍Scala将Scala集合转换为Java集合,反之亦然,包括了Scala将Scala集合转换为Java集合,反之亦然的使用技巧和注意事项,需要的朋友参考一下 示例 当您需要将集合传递到Java方法中时: 如果Java代码返回Java集合,则可以通过类似的方式将其转换为Scala集合: 请注意,这些是装饰器,因此它们仅将基础集合包装在Scala或Java集合接口中。因此,通话.asJa
我得到以下情况: 源类: null
我可以想象这样一个解决方案:一个子映射器,在这个映射器中,我用如下所示的查找重写Dto to Domain方法: 但目标在MapStruct中是必需的。也许我可以以某种方式指定整个对象作为目标?
我们已经了解了以下复杂的数据结构: 存储带键的数据(keyed)集合的对象。 存储有序集合的数组。 但这还不足以应对现实情况。这就是为什么存在 Map 和 Set。 Map Map 是一个带键的数据项的集合,就像一个 Object 一样。 但是它们最大的差别是 Map 允许任何类型的键(key)。 它的方法和属性如下: new Map() —— 创建 map。 map.set(key, value