1.介绍

MapStruct是一个代码生成器,它基于约定优于配置的方法极大地简化了Java bean类型之间映射的实现。
生成的映射代码使用简单的方法调用,因此速度快,类型安全且易于理解。

2.优点

多层应用程序通常需要在不同的对象模型(例如实体和DTO)之间进行映射。编写此类映射代码是一项繁琐且容易出错的任务。MapStruct旨在通过使其尽可能自动化来简化这项工作。
与其他映射框架相比,MapStruct在编译时生成Bean映射,以确保高性能,允许快速的开发人员反馈和彻底的错误检查。

3.maven引入

  1. <----依赖引入---->
  2. <dependency>
  3. <groupId>org.mapstruct</groupId>
  4. <artifactId>mapstruct</artifactId>
  5. <version>1.3.1.Final</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.mapstruct</groupId>
  9. <artifactId>mapstruct-processor</artifactId>
  10. <version>1.3.1.Final</version>
  11. </dependency>
  12. <----maven编译插件配置---->
  13. <plugin>
  14. <groupId>org.apache.maven.plugins</groupId>
  15. <artifactId>maven-compiler-plugin</artifactId>
  16. <version>3.8.1</version>
  17. <configuration>
  18. <source>1.8</source>
  19. <target>1.8</target>
  20. <annotationProcessorPaths>
  21. <path>
  22. <groupId>org.mapstruct</groupId>
  23. <artifactId>mapstruct-processor</artifactId>
  24. <version>1.3.1.Final</version>
  25. </path>
  26. <----添加lombok,否则会出现无找到get/set方法错误---->
  27. <path>
  28. <groupId>org.projectlombok</groupId>
  29. <artifactId>lombok</artifactId>
  30. <version>${lombok.version}</version>
  31. </path>
  32. </annotationProcessorPaths>
  33. </configuration>
  34. </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);