MapStruct - 生成空对象解决方案

Posted 程序员牧码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MapStruct - 生成空对象解决方案相关的知识,希望对你有一定的参考价值。

lombok 和 mapstruct 配合转换 bean 后,mapstruct 生成空的实现(对象是有的,但是属性没赋值)

解决思路

在 maven-compiler-plugin 插件下多配置一个 lombok-mapstruct-binding 注解处理器来绑定mapstruct 和 lombok

代码实现

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>8</source>
        <target>8</target>
        <encoding>UTF-8</encoding>
        <annotationProcessorPaths>
            <!-- 必须要加, 否则生成不了 MapperImpl 实现类 -->
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>1.4.0.Final</version>
            </path>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.20</version>
            </path>
            <!-- 如果是 0.1.0 有可能出现生成了maptruct的实现类, 但该类只创建了对象, 没有进行赋值 -->
            <path> 
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok-mapstruct-binding</artifactId>
                <version>0.2.0</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>

以上是关于MapStruct - 生成空对象解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Mapstruct 映射:如果所有源参数属性为空,则返回空对象

Mapstruct 映射:如果所有源参数属性为空,则返回空对象

mapstruct 1.4.2和lombok 1.18.16之后版本,报错和mapstruct生成空的实现

优雅的转换Bean对象 mapstruct使用笔记详解

从 TypeScript 类型定义或 GraphQL 片段定义生成 JavaScript 空对象

Spring Boot | 集成MapStruct实现不同类型Java对象间的自动转换