解决io.github.linpeilie.ConvertException: cannot find converter from Car to CarDto

问题复现:

项目中使用了MapStructPlus进行数据转换,但没按照文档说明进行使用,导致出现下面的问题!

 - 请求地址'/demo/car/list',发生未知异常.
io.github.linpeilie.ConvertException: cannot find converter from Car to CarDto
	at io.github.linpeilie.Converter.convert(Converter.java:31)
	at io.github.linpeilie.Converter.lambda$convert$0(Converter.java:54)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at io.github.linpeilie.Converter.convert(Converter.java:54)
	at org.x.common.core.utils.MapstructUtils.convert(MapstructUtils.java:73)
	at org.x.common.mybatis.core.mapper.BaseMapperPlus.selectVoList(BaseMapperPlus.java:174)
	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:166)
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
	at jdk.proxy2/jdk.proxy2.$Proxy182.selectVoList(Unknown Source)

认真阅读官方文档

mapstruct.plus官网文档

笔记

单与单类之间的映射

@AutoMapper(target = CarDto.class)
public class Car {
    // ...
}

该例子表示,会生成 Car 转换为 CarDto 的接口 CarToCarDtoMapper 及实现类 CarToCarDtoMapperImpl。在生成的转换代码中,源类型(Car)的所有可读属性将被复制到目标属性类型(CarDto)的相应属性中。

当一个属性与它的目标实体对应物具有相同的名称时,将会被隐式映射。

除此之外,MapStructPlus 会根据当前的默认规则,生成 CarDto 转换为 Car 的接口 CarDtoToCarMapper 及实现类 CarDtoToCarMapperImpl。如果不想生成该转换逻辑的话,可以通过注解的 reverseConvertGenerate 属性来配置。

单与多类之间的映射

@Data
@AutoMappers({
    @AutoMapper(target = UserDto.class),
    @AutoMapper(target = UserVO.class)
})
public class User {
    // fields
}

当想要配置一个类与多个类进行转换时,可以通过 @AutoMappers 来配置,该注解支持配置多个 @AutoMapper

实践

问题已解决
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Remember_Ray

何其有幸,得你青睐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值