介绍
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的简单使用示例。