mapstruct+lombok整合

环境

IDEA 2020.1.4
springboot 2.3.3
mapstruct 1.3.1.Final
lombok 1.18.12
IDEA插件 MapStruct Support,推荐使用,支持跳转到实现、注解字段名变化后提示

1.遇到的问题

编译问题

  1. 没有生成mapping代码
ClassNotFoundException: Cannot find implementation for com.everspring.mapstruct.use.mapping.OrderMapping

解决方法: 引入mapstruct-processor,这个是解决实现类没有生成的

<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <version>${mapstruct.version}</version>
</dependency>
  1. 由于加入了lombok的@Builder导致的编译报错
    编译报错
Error:(17, 13) java: com.everspring.mapstruct.use.model.OrderVo does not have an accessible parameterless constructor.

编译报错

Error:(18, 1) java: 无法将类 com.everspring.mapstruct.use.model.Order中的构造器 Order应用到给定类型;
需要: 没有参数
找到: java.lang.Long,java.math.BigDecimal,java.lang.String,java.util.Date,java.util.List<com.everspring.mapstruct.use.model.OrderDetail>
原因: 实际参数列表和形式参数列表长度不同

解决方法
加入lombok的@NoArgsConstructor、@AllArgsConstructor,如果不用@Builder就不回有问题

2.代码问题

  1. 属性中有集合,集合类的属性需要做映射,比如案例中orderDetailList的id要映射成orderDetailVoList的orderDetailId
    解决方法
    对集合类中的对象单独写一个映射,然后在需要转换的最外层映射@Mappers中使用use引用,如案例中单独实现了OrderDetailMapping,再在最外层映射引用
@Mapper(uses = {OrderDetailMapping.class})

代码地址

https://gitee.com/EverSpring007/mapstruct-use

参考资料

https://yq.aliyun.com/articles/591623?do=login&accounttraceid=6d6185194eb0408c9a6a47d4d59e9d9cfqyh

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值