1.介绍
MapStruct是一个代码生成器,它基于约定优于配置的方法极大地简化了Java bean类型之间映射的实现。
生成的映射代码使用简单的方法调用,因此速度快,类型安全且易于理解。
2.优点
多层应用程序通常需要在不同的对象模型(例如实体和DTO)之间进行映射。编写此类映射代码是一项繁琐且容易出错的任务。MapStruct旨在通过使其尽可能自动化来简化这项工作。
与其他映射框架相比,MapStruct在编译时生成Bean映射,以确保高性能,允许快速的开发人员反馈和彻底的错误检查。
3.maven引入
<----依赖引入----><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>1.3.1.Final</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.3.1.Final</version></dependency><----maven编译插件配置----><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><annotationProcessorPaths><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.3.1.Final</version></path><----添加lombok,否则会出现无找到get/set方法错误----><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></path></annotationProcessorPaths></configuration></plugin>
4.编写Mapper类
@Mapper
public interface OrderMapper {
OrderMapper INSTANCE = Mappers.getMapper(OrderMapper.class);
RmaDo rmaVoToRmaDo(RmaVo rmaVo);
RmaDoVo rmaDoToRmaDoVo(RmaDo rmaDo);
RmResultDo rmaResVoToRmaResDo(RmResultVo rmResultVo);
//接口的默认方法 在匹配过程中能够根据入参和出参进行选择
default String skuListToSkuListStr(List<Sku> skuList) {
return JSON.toJSONString(skuList);
}
default List<Sku> skuListToSkuListObj(String skuList) {
return JSON.parseObject(skuList,new TypeReference<ArrayList<Sku>>() {});
}
}
5.使用
RmResultDo rmResultDo = OrderMapper.INSTANCE.rmaResVoToRmaResDo(rmResultVo);
