大家都知道MapStruct
在Java中用来做不同对象之间的转换(DTO,DO,BO,VO...),使用方式简单,只需要按规则写一个相关接口,甚至不需要实现(较类似于jpa的JpaRepository接口的使用方式),就能直接完成对象间的转换。
今天一起聊一下多级嵌套映射的例子
以下是官方介绍(摘要):官方文档链接 MapStruct官网
MapStruct 是一个 Java 注释处理器,用于生成类型安全的 bean 映射类。
您所要做的就是定义一个映射器接口,该接口可以声明任何您所需的映射方法。在编译期间,MapStruct 将生成此接口的实现。这个实现使用普通的 Java 方法调用(get,set方法)来映射源对象和目标对象,而不是使用反射。
优点:
- 与手动编写映射代码相比,MapStruct 通过生成编写繁琐且容易出错的代码来节省时间。
- 编译时类型安全:只能映射相互映射的对象和属性,不能将订单实体意外映射到客户 DTO 等。
- 当出现以下情况,程序在编译期间就会给出提示。
映射不完整(并非所有目标属性都被映射)
映射不正确(找不到合适的映射方法或类型转换)
引入依赖(maven)
这里需要注意:idea版本不同,引入的依赖和配置也有一些小差别,这里我的idea版本是 2019.3,其他版本idea可以先按着这个配置写,有问题的话,参考文末"常见问题"一节,若无法解决,可以在百度或google以下具体原因.
MapStruct主要依赖:其他依赖管理工具(Ant,Gradle)的导入,可见 官方文档链接
<!--最好版本号和这个一致,不然可能存在包不兼容等问题,详见文末“常见问题”一节-->
<properties>
<org.mapstruct.version>1.4.2.Final</org.mapstruct.version>
<lombok.version>1.18.12</lombok.version>
</properties>
<dependencies>
<dependency>
<groupid>org.mapstruct</groupid>
<artifactid>mapstruct</artifactid>
<version>${org.mapstruct.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-compiler-plugin</artifactid>
<version>3.8.1</version>
<configuration>
<source>1.8