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

背景

我的项目采纳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后反对了。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理