问题描述:
MapperStruct生成的实现了为空
按照在MapperStruct官网Installation – MapStruct中的方法配置后,生成的实现了是空的,如下:
@Overridepublic DeployHistory toEntity(DeployHistoryDto arg0) {if ( arg0 == null ) {return null;}DeployHistory deployHistory = new DeployHistory();return deployHistory;}@Overridepublic DeployHistoryDto toDto(DeployHistory arg0) {if ( arg0 == null ) {return null;}DeployHistoryDto deployHistoryDto = new DeployHistoryDto();return deployHistoryDto;}
原因分析:
使用的lombok版本过高
解决方案:
我在查阅了很多资料后终于解决问题了。需要在pom.xml中添加插件lombok-mapstruct-binding
,完整的配置如下:
<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>
欢迎大家关注我的号和博客
- 博客 https://jhacker.cn
- 号 “CodeCraft”