Skip to content

介绍

MapStruct 是一个Java注解处理器,专注于简化对象间的映射逻辑(例如将Entity实体转换为DTO数据传输对象)。 通过编译时自动生成类型安全的映射代码,减少手动编写繁琐的赋值逻辑。

下面将介绍如何使用MapStruct进行实体类转换。

使用示例

1.引入MapStruct的依赖

ts
<dependency>
  <groupId>org.mapstruct</groupId>
  <artifactId>mapstruct</artifactId>
  <version>1.4.2.Final</version>
</dependency>
<dependency>
  <groupId>org.mapstruct</groupId>
  <artifactId>mapstruct-processor</artifactId>
  <version>1.4.2.Final</version>
</dependency>

2.当成员变量名相同时

ts
/**  
 * @Mapper 定义这是一个MapStruct对象属性转换接口,在这个类里面规定转换规则  
 *          在项目构建时,会自动生成改接口的实现类,这个实现类将实现对象属性值复制  
 * 
 * 注意:此处的Mapper注解不是MyBtais的Mapper注解
 */  
@Mapper
public interface SubjectCategoryConverter {
    //通过Mappers.getMapper(SubjectCategoryConverter.class)方法,生成SubjectCategoryConverter接口的实现类实例
    SubjectCategoryConverter INSTANCE = Mappers.getMapper(SubjectCategoryConverter.class);

    //定义一个方法,将BO对象转换为Category对象
    SubjectCategory convertBoToCategory(SubjectCategoryBO subjectCategoryBO);
}

调用实例化对象的convertBoToCategory方法

ts

public void add(SubjectCategoryBO subjectCategoryBO) {
        SubjectCategory subjectCategory = SubjectCategoryConverter.INSTANCE
                .convertBoToCategory(subjectCategoryBO);
        subjectCategoryService.insert(subjectCategory);
    }

3.成员变量名不相同时

ts
/**    
 * @Mapping 用来定义属性复制规则 source 指定源对象属性 target指定目标对象属性  
 */  
        @Mappings({  
                @Mapping(source = "time", target = "date")
        }) 
        SubjectCategory convertBoToCategory(SubjectCategoryBO subjectCategoryBO);

以上便是MapStruct的简单使用示例。

相关文章

MapStruct进行实体类转换全部为null

上次更新于: