背景
專案採用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
後支援了。