MapperStruct实现类为空

问题描述:

MapperStruct生成的实现了为空

按照在MapperStruct官网Installation – MapStruct中的方法配置后,生成的实现了是空的,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Override
public DeployHistory toEntity(DeployHistoryDto arg0) {
if ( arg0 == null ) {
return null;
}
DeployHistory deployHistory = new DeployHistory();

return deployHistory;
}

@Override
public DeployHistoryDto toDto(DeployHistory arg0) {
if ( arg0 == null ) {
return null;
}
DeployHistoryDto deployHistoryDto = new DeployHistoryDto();

return deployHistoryDto;
}

原因分析:

使用的lombok版本过高

解决方案:

我在查阅了很多资料后终于解决问题了。需要在pom.xml中添加插件lombok-mapstruct-binding,完整的配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<properties>
<lombok.version>1.18.24</lombok.version>
<mapstruct.version>1.5.5.Final</mapstruct.version>
<lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version>
</properties>
<dependencies>
<!--mapStruct依赖-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source><!-- depending on your project -->
<target>17</target><!-- depending on your project -->
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<!-- other annotation processors -->
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>${lombok-mapstruct-binding.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>

欢迎大家关注我的号和博客