StudentBean{
String id;
int marks;
}
StudentDTO{
String id;
int marks;
}
映射器类如下所示:
@Mapper
Interface studentMapper{
@mapping(target="id", source="id")// apply condition 1
@mapping(target="marks", source="marks")// apply condition 2
StudentDTO toDTO(StudentBean);
}
How to achieve this with mapstruct?
根据您描述的条件,我假设您希望将源StudentBean映射到现有的StudentDTO目标,否则,您的第一个条件将没有意义。您可以在这里从Mapstruct文档中阅读更多关于映射到现有bean的信息。
条件2可以通过在@mapping
注释上设置NullValuePropertyMappingStrategy=NullValuePropertyMappingStrategy.ignore
轻松实现。如果源的propeties为null,此设置将允许Mapstruct忽略映射。
您的条件1有点棘手,但是可以通过1.5.0.beta1
发行版中最新的特性条件映射来实现。请注意,这个功能目前只在测试版中可用。
映射器的设置和编写如下所示:
pom.xml
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.5.0.Beta1</version>
</dependency>
映射器
@Mapper
Interface studentMapper{
@Mapping(conditionExpression = "java(studentDTO.getId() == null)", target="id", source="id", nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
@Mapping(target="marks", source="marks", nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
StudentDTO toExistingStudentDTO(StudentBean studentBean, @MappingTarget StudentDTO studentDTO);
}
我使用Mapstruct(1.2.0.final)来映射dto对象,我希望将对象的属性提取到它自己的对象实例。 如何做到这一点?或者有没有更方便的方法来去掉只有一个属性的(无用的)对象? 提前谢了。
根据Mapstruct文档,通过为被引用的对象(对象B)定义映射方法,可以将一个对象(对象A)映射到D,该对象包含另一个对象(对象B)。但是如果我只需要映射那个对象(对象B)的属性而不是整个对象呢? 但是如何用Java和MapStruct来实现呢?
我正在使用DTO对象从spring rest控制器中的@RequestBody中检索信息,并在json响应中使用相同的DTO对象。我想完全隐藏一些字段不让响应。 我尝试了,它为未映射的属性返回null,但我的问题是: null FieldBonlyOrderToOrderToMapper 将返回一个OrderDto对象,该对象没有名为(otherFiledA)的字段
假设我有这样的映射: 现在,我需要将子列表映射到子列表,但它们都有相同的父对象。我希望这样做: 但不管用,有机会做吗?
问题内容: 我有一堂课; 我还有一节课; 我将如何搜索Student ,名字John,lastName Doe? 如果是出生日期属性,我将在日期上创建一个并添加一个相等限制()。我将如何对AppUser对象中的lastName和firstName进行操作? 问题答案: 查询: 要使用条件,请检查此线程 还可以从hibernate文档中查看此页面
我创建映射如下所示。如何将平面dto对象属性(街道、城市等)映射到域对象中的嵌套地址。当我试着去做的时候,我发现了一个错误: [错误]诊断:返回类型中的属性“Address.PostalCode”未知。@Mapping(来源=“City”,目标=“Address.City”), 还有类...