关于java:小知识mapstruct通用配置

17次阅读

共计 634 个字符,预计需要花费 2 分钟才能阅读完成。

背景

我的项目采纳 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")
})
@CommonEntityMapping
MyEntity convert(MyModel myModel);

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

正文完
 0