org.apache.ibatis.binding.BindingException: Type interface xxx is not known to the MapperRegistry.
问题描述:在使用mybatis的过程中,出现了如下错误提示????org.apache.ibatis.binding.BindingException: Type interface com.cheng.dao.UserDao is not known to the MapperRegistry.翻译:MapperRegistry不知道类型接口com.cheng.dao.UserDao。排错:..
问题描述:
在使用mybatis的过程中,出现了如下错误提示👇
org.apache.ibatis.binding.BindingException: Type interface com.cheng.dao.UserDao is not known to the MapperRegistry.
翻译:MapperRegistry不知道类型接口com.cheng.dao.UserDao。
排错:
1、先查看mapper接口和mapper.xml是否在同一个包下,如果在同一个包下,需确保名字一样(不包括后缀)
2、查看mapper.xml的命名空间(namespace)是否与mapper接口所在的包名一致,如果不一致,需要修改
3、检查接口方法名,是否与xml文件中的SQL语句的id值一致,如果不一致,需要修改
4、编译后,查看接口所在目录下是否有对应的xml文件(前提是使用maven创建项目),如果没有,需要在pom.xml文件中做如下配置👇
<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
注:
如果是第4个原因,需要注意一些问题
- 有的filtering设置是为true,但如果有中文注释,有可能会出现乱码问题(非绝对),如果出现,只需将其改为false即可
- 如果在一个项目中,存在多个Module,那在项目的最外层pom.xml中配置resources有时不会生效,需要在具体Module的pom.xml中再配置一次
忍不住吐槽一句:
这次实在是被这个错误坑得欲仙欲死,所有的xml配置文件都检查了数遍,几乎是一条一条的排查,都没有发现问题,甚至都将整个Module删除重写了两遍,都没能发现错误,只因在项目创建时就在pom.xml中配置过resources。
直到……忽然想起在哪听过,这玩意儿在最外层pom.xml中有可能不生效,就顺手拷贝到Module中,于是问题就——这——么——被——解——决——了?
就问你气不气!!!
更多推荐
所有评论(0)