使用 MapStruct 整合 Lombok 生成的方法为空的问题

MapStruct 与 Lombok 的整合主要涉及以下几个方面:

  1. 兼容性:MapStruct 从版本 1.2.0.Beta1 开始支持与 Lombok 整合,利用 Lombok 生成的 getter、setter 和构造函数来生成映射实现。

  2. 配置要求

    • Lombok 版本需要与 MapStruct 兼容,例如 MapStruct 1.6.0.Beta2 可以与 Lombok 1.18.16 版本一起使用。
    • 对于 Lombok 1.18.16 版本,需要添加额外的注解处理器 lombok-mapstruct-binding 以解决 Lombok 和 MapStruct 模块的编译问题。
  3. Maven 配置:在 Maven 项目中,需要在 pom.xml 文件中添加 Lombok 依赖和相应的注解处理器配置。例如:

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${org.projectlombok.version}</version>
      <scope>provided</scope>
    </dependency>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        ...
        <annotationProcessorPaths>
          <path>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok-mapstruct-binding</artifactId>
            <version>0.2.0</version>
          </path>
        </annotationProcessorPaths>
      </configuration>
    </plugin>
    
  4. Gradle 配置:在 Gradle 项目中,需要在 build.gradle 文件中添加 Lombok 依赖和注解处理器。例如:

    dependencies {
      implementation "org.mapstruct:mapstruct:${mapstructVersion}"
      compileOnly "org.projectlombok:lombok:1.18.16"
      annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0"
      annotationProcessor "org.mapstruct:mapstruct-processor:${mapstructVersion}"
      annotationProcessor "org.projectlombok:lombok:1.18.16"
    }
    
  5. 使用示例:在代码中,可以使用 Lombok 的 @Data 注解来生成类的访问器和构造函数,然后在 MapStruct 映射接口中定义映射方法。例如:

    @Data
    public class Source {
      private String test;
    }
    
    public class Target {
      private Long testing;
      // getters and setters
    }
    
    @Mapper
    public interface SourceTargetMapper {
      SourceTargetMapper MAPPER = Mappers.getMapper(SourceTargetMapper.class);
    
      @Mapping(source = "test", target = "testing")
      Target toTarget(Source s);
    }
    
  6. 注意事项:Lombok 生成的代码有时可能不完全符合个别映射的期望。在这种情况下,需要调整 MapStruct 映射或相应地配置 Lombok。

  7. GitHub 项目:有关 MapStruct 与 Lombok 整合的更多工作示例,可以参考 GitHub 上的 mapstruct-lombok 项目。

整合 Lombok 可以简化 MapStruct 的使用,通过减少样板代码提高开发效率。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值