背景

我的项目采纳mapstruct做对象属性拷贝,我的项目的多个实体类有雷同的属性,比方createTime,在配置映射时如果都用疏忽某个映射的数据,或则批改映射属性名,那每个@Mappings里都要配置:

@Mappings(value = {        @Mapping(target = "id", ignore = true),        @Mapping(source = "createTime", target = "insertTime")})

是否能够将这样雷同的配置抽取进去?

解决方案

官网文档:MapStruct 1.4.2.Final Reference Guide

代码

公共配置:

@Retention(RetentionPolicy.CLASS)@Mappings(value = {        @Mapping(target = "id", ignore = true),        @Mapping(source = "createTime", target = "insertTime")})public @interface CommonEntityMapping {}

理论应用:

@Mappings(value = {        @Mapping(source = "filed1", target = "field2")})@CommonEntityMappingMyEntity convert(MyModel myModel);

另:我的项目刚开始应用的mapstruct版本是1.2.0-Final,不反对在上注解@Mappings,降级到1.4.2-Final后反对了。