【小知识】mapstruct通用配置

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

@Mappings(value = https://www.it610.com/article/{@Mapping(target ="id", ignore = true),@Mapping(source = "createTime", target = "insertTime")})

是否可以将这样相同的配置抽取出来?
解决方案
官方文档:MapStruct 1.4.2.Final Reference Guide
【小知识】mapstruct通用配置
文章图片

代码
公共配置:
@Retention(RetentionPolicy.CLASS) @Mappings(value = https://www.it610.com/article/{ @Mapping(target ="id", ignore = true), @Mapping(source = "createTime", target = "insertTime") }) public @interface CommonEntityMapping {}

实际使用:
@Mappings(value = https://www.it610.com/article/{ @Mapping(source ="filed1", target = "field2") }) @CommonEntityMapping MyEntity convert(MyModel myModel);

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

    推荐阅读