当前位置: 首页 > 后端技术 > Java

【Tips】mapstruct通用配置

时间:2023-04-01 19:18:01 Java

后台工程使用mapstruct复制对象属性。项目的多个实体类具有相同的属性,比如createTime。如果在配置映射的时候忽略了某个映射的数据,或者修改了Mapping属性名,那么每个@Mappings都要配置:@Mappings(value={@Mapping(target="id",ignore=true),@Mapping(source="createTime",target="insertTime")})是否可以提取相同的配置?解决方案官方文档:MapStruct1.4.2.FinalReferenceGuide代码公共配置:@Retention(RetentionPolicy.CLASS)@Mappings(value={@Mapping(target="id",ignore=true),@Mapping(source="createTime",target="insertTime")})public@interfaceCommonEntityMapping{}实际使用:@Mappings(value={@Mapping(source="filed1",target="field2")})@CommonEntityMappingMyEntityconvert(MyModelmyModel);另:项目初期使用的mapstruct版本为1.2.0-Final,不支持类上的@Mappings注解,升级到1.4.2-Final后支持。高级如果你只想让一个类有很多字段,但你只想映射缺少的几个字段怎么办?可以在@Mapping时设置ignore=true:@Mapping(target="id",ignore=true)但是正如申诉所说,如果类有很多字段,你必须为每个字段添加配置,太麻烦了,有没有其他方式?没有配置@Mapping的字段可以通过配置@BeanMapping(ignoreByDefault=true)类来忽略。MapStruct1.4.2.Final参考指南-defining-mapper也可以配置unmappedTargetPolicy。地图结构1.4.2。最终参考指南-共享配置