项目场景:
框架整合中的一个小小注解,竟能让整个项目启动失败? 本文记录一次因误用 MyBatis 和 MapStruct 注解导致的典型错误,揭示多框架整合中的隐藏陷阱。
问题描述
诡异的启动报错:
当我在 SpringBoot 项目中添加了一个新的映射接口后,启动时突然抛出异常:java: Can’t generate mapping method with primitive return type.
我定义的接口看似非常简单:
@Mapper
public interface UserConverter {
int convertToAge(User user); // 返回基本类型int
}
根据错误提示,我尝试了各种解决方案:
将返回值从 int 改为 Integer
添加默认值处理逻辑
但问题依旧存在——直到我注意到 import 语句的细微差别…
原因分析:
致命陷阱:被忽视的 import 行
// 正确导入:MyBatis的Mapper注解
import org.apache.ibatis.annotations.Mapper;
// 错误导入:MapStruct的Mapper注解
import org.mapstruct.Mapper;
不小心引入了 MapStruct 的 @Mapper 注解
解决方案:
修正注解导入
// 修改前
- import org.mapstruct.Mapper;
// 修改后
+ import org.apache.ibatis.annotations.Mapper;