Type interface org.apache.ibatis.dao.UserMapper is not known to the MapperRegistry

Type interface org.apache.ibatis.dao.UserMapper is not known to the MapperRegistry.

今天来聊聊type interface org.apache.ibatis.dao.UserMapper is not known to the MapperRegistry.这个错误

完整错误
在这里插入图片描述
没有找到具体的MapperRegistry。
解决方案

  • 查看一下自己的mappers 是否正确,如果配置正确了可以看看mapper.xml文件和自己的dao接口是否在同一目录(两种配置方式)

在这里插入图片描述
在这里插入图片描述

  • 如果配置的目录在resource上,那么检查一下生成的target classes文件是否有加载到配置的mapper.xml,(注意配置的文件夹也需要和对应的dao在同一层)
    在这里插入图片描述

如果没有加载到的话我们可以在maven配置上

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

问什么要这么做呢?我们去看看源码

在这里插入图片描述
这是mybatis用来读取我们标签配置的方法,我们现在主要关注configuration.addMappers,通过读取我们配置的标签比如匹配到了mapper里面的配置的package属性就会走到configuration.addMappers这个方法的注册我们的mapper。

接下来继续看,后面走到了addMappers这个方法中,可以看到resolverUtil.find(new ResolverUtil.IsA(superType), packageName);我们走进这个方法看看。

在这里插入图片描述

这个方法其实主要做的事情就是根据我们 标签读取这个包下面所有的文件

在这里插入图片描述

底层其实就是通过**classLoader().getResource()**方法获取资源信息

在这里插入图片描述
在这里插入图片描述
parent其实就是我们的ClassLoader,这边就在递归获取下面的资源,可以看到他获取到了我们mapper文件下面所有的资源了,由于我的dao接口文件不在这个目录下以

在这里插入图片描述

导致了在knownMappers中获取不到具体的dao文件所以就发生了报错,所以这就是为什么配置mapper.xml和dao接口需要再同一个文件夹下面了。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

久★伴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值