4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
EverSpring/mapstruct-use
来自 : gitee.com/EverSpring007/mapstr 发布时间:2021-03-25
环境

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

遇到的问题 编译问题 没有生成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 
由于加入了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就不回有问题

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

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


Error:(18, 1) java: 无法将类 com.everspring.mapstruct.use.model.Order中的构造器 Order应用到给定类型; 需要: 没有参数 找到: java.lang.Long,java.math...EverSpring/mapstruct

本文链接: http://everspring.immuno-online.com/view-773035.html

发布于 : 2021-03-25 阅读(0)