报错信息:
11:30:43.383 [restartedMain] WARN o.m.s.m.ClassPathMapperScanner - [warn,44] - No MyBatis mapper was found in '[com.ruoyi.web.controller.common.CaptchaController]' package. Please check your configuration.
11:30:43.385 [restartedMain] WARN o.m.s.m.ClassPathMapperScanner - [warn,44] - No MyBatis mapper was found in '[com.ruoyi.system.service.ISysConfigService]' package. Please check your configuration.
报错界面:

这个错误的原因一般是MyBatis 在指定的包com.ruoyi.web.controller.common下没有找到任何 Mapper 接口,通常是由于包路径配置错误或 Mapper 接口放置位置不当导致的。
以下是我整理的具体分析和解决方法:
一、错误原因解析
通常情况下MyBatis 需要通过@MapperScan注解(或 XML 配置)指定Mapper 接口所在的包路径,并扫描该路径下的接口生成代理实现类。而这里配置的扫描路径是com.ruoyi.web.controller.common,这是Controller 层的包,而控制器通常处理 HTTP 请求,并非 Mapper 接口应在的位置,因此必然扫描不到。
显然,Mapper 接口不应放在controller包下,扫描路径也不应指向这里。
二、解决步骤
1. 确认 Mapper 接口的正确位置
- 检查Mapper 接口(通常以
XXXMapper.java命名,如UserMapper.java)是否放在了com.ruoyi.mapper(或其子包)下。示例:正确路径应为com.ruoyi.mapper.system.UserMapper.java。
2. 修正@MapperScan的扫描路径
在 Ruoyi 框架中,@MapperScan通常配置在启动类(如RuoYiApplication.java)上,需要将扫描路径指向 Mapper 接口所在的包:
// 错误配置(扫描了controller包)
@SpringBootApplication
@MapperScan("com.ruoyi.web.controller.common") // 错误路径
public class RuoYiApplication {
public static void main(String[] args) {
SpringApplication.run(RuoYiApplication.class, args);
}
}
// 正确配置(扫描mapper包)
@SpringBootApplication
@MapperScan("com.ruoyi.mapper") // 正确路径,指向Mapper接口所在包
public class RuoYiApplication {
public static void main(String[] args) {
SpringApplication.run(RuoYiApplication.class, args);
}
}
- 若有多个 Mapper 包,可通过数组配置:
@MapperScan({"com.ruoyi.mapper", "com.ruoyi.othermapper"})。
3. 检查 Mapper 接口是否添加注解
- 确保 Mapper 接口上添加了
@Mapper注解(可选,但若未配置@MapperScan,则必须添加):java
运行
(注:若已通过@Mapper // 标识为MyBatis Mapper接口 public interface UserMapper { // 数据库操作方法 }@MapperScan扫描了包,@Mapper注解可省略)。
4. 排除其他可能问题
- 包名拼写错误:检查
@MapperScan中的包路径是否有拼写错误(如大小写、单词错误)。 - IDE 缓存问题:清理项目缓存(如 IDEA 的
File -> Invalidate Caches),重新编译项目。 - Mapper 接口未被编译:确保 Mapper 接口在
src/main/java目录下(而非src/test),否则可能不参与编译。 - 不能在启动类乱加@MapperScan,我这里就是因为@MapperScan注解加在了启动类上面导致的报错。
补充知识点:在 Ruoyi(若依)框架中,包结构遵循分层设计:
com.ruoyi.web.controller:存放 Controller(控制器),处理前端请求;com.ruoyi.mapper:存放 MyBatis 的 Mapper 接口(数据库操作接口);com.ruoyi.service:存放 Service(业务逻辑);com.ruoyi.entity:存放实体类。

268

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



