开发环境
JDK17+SpringBoot+MybatisPlus+Mapstruct
问题描述
刚进入这个项目组,发现项目之前引入了Mapstruct依赖包但是没有用起来,我就想着自己给他用起来吧,写了个转换器接口,转换器接口如下:
import org.mapstruct.Mapper;
@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
public interface TeachConverter {
TeachConverter INSTANCE = Mappers.getMapper(TeachConverter.class);
...
}
写好这个接口后,进行启动SpringBoot项目然后就报如下得错误:java: Can't generate mapping method with primitive return type.
在构建阶段就会报错,错误会有下这几个:

分析思路
这个一般是Mapstruct在进行genertate中出现得错误,但是我这里暂时只写了一个TeachConverter转换器接口,并没有他展示得错误,随机就开始各种排查,后续又通过mapstruct.Mapper全局搜索就发现了原有项目中的问题,很多该用ibatis下@Mapper注解得用成了mapstruct下的@Mapper
解决办法
既然主要原因是查询的xxxMapper类无意间引用了:import org.mapstruct.Mapper;
那就将所有查询的xxxMapper类引用正确的包:import org.apache.ibatis.annotations.Mapper;
所有查询类XxxMapper接口的引用包改下
// 错误引用
import org.mapstruct.Mapper;
// 改成正确的引用
import org.apache.ibatis.annotations.Mapper;



166

被折叠的 条评论
为什么被折叠?



