当 @Mapper 注解选错门:一个因导错包引发的“低级错误“全解析

项目场景:

框架整合中的一个小小注解,竟能让整个项目启动失败? 本文记录一次因误用 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;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值