报错:No MyBatis mapper was found in ‘[com.ruoyi.web.controller.common.CaptchaController]‘

报错信息:

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:存放实体类。
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值