【小知识】mapstruct通用配置

背景

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


@Mappings(value = {

        @Mapping(target = "id", ignore = true),

        @Mapping(source = "createTime", target = "insertTime")

})

是否可以将这样相同的配置抽取出来?

解决方案

官方文档:MapStruct 1.4.2.Final Reference Guide
【小知识】mapstruct通用配置_第1张图片

代码

公共配置:

@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")
})
@CommonEntityMapping
MyEntity convert(MyModel myModel);

另:项目刚开始使用的mapstruct版本是1.2.0-Final,不支持在上注解@Mappings,升级到1.4.2-Final后支持了。

你可能感兴趣的:(java)