项目之中的实体对象超多,DTO、VO、DO等等,都需要涉及到属性之间的映射。此项工作的逻辑性不是很复杂,但是非常的繁琐,最好需要一个框架结构来做此件事情。根据java的特性,解决方案大概有两种:
1、通过java自身的反射,反射确实方便,但是运行时执行,消耗性能。
2、框架自身最好能自动生成代码,编译执行,并且可以检查到属性名称的变化带来的编译错误。
鉴于以上两点,我们选择了MapStruct,此框架具有以下的优点:
- 注解处理器
- 可以生成
JavaBean
之间那的映射代码 - 类型安全, 高性能, 无依赖性
入门如下:
1、引入依赖
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
---注解分析器
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5</version> <!-- or newer version -->
<configuration>
<source>1.8</source> <!-- depending on your project -->
<target>1.8</target> <!-- depending on your project -->
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</path>
<!-- other annotation processors -->
</annotationProcessorPaths>
</configuration>
</plugin>
2、插件工具
mapstruct的插件可以自动检查到属性字段的更改,并且提供属性灵活的选择。(我下载了插件不好使)
idea通过插件市场下载即可。