如果已经看了很多其他常规的解决办法都没有解决你的问题,请直接看第五点!!!就是路径问题
最近新建了一个项目,重新配置项目环境,引入Mybatis后在调用接口时出现异常:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception!!
跟大家一样看了网上的很多文章和资料,一直都没解决问题。
网上的基本上都是那三步骤:
1:什么Mapper中的方法名和对应xml中对应的id名不一样。
2:xml中的namespace对应的Mapper路径不一样,或者说xml中对应的实体类型不一样或者有错误
3:就是大家常常犯的错误就是什么拼写错误啊等等,仔细检查一下,当你发现你路径或者内容都是编辑器提示或者你自己复制的,那肯定就不是这个问题。
4:一些人把mapper和其对应的xml文件写在了一个地方,然后在pom.xml中又没有配置,就导致找不到对应的mapper文件咯,就在pom.xml中的<build>里加上如下的配置即可。
<!-- 如果不添加此节点在resources外的mybatis的mapper.xml文件都会被漏掉。 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
5:如果你的mapper和其对应的xml不是写在一起,将xml写在resources中的话,那就不用上面的那个配置。但是你编译后注意项目中target文件夹,注意里面的mapper是否和xml编译到了一起,如下:

如果没有编译到一起,那你就要注意了是否路径出现了问题!!!,打开文件的目录查看你resources下xml的路径是否和你mapper里的路径一样。举例:我的mapper路径是com.financialSystem.mapper.UserMapper,那么你的xml路径在resources里应该也是一摸一样的,然后一些人可能觉得没问题了!但是问题就在这,你不要在编辑器里看,要打开文件夹去看,在resources里创建文件夹是只有叫目录的:

如果你在resources里面使用目录去创建com.financialSystem.mapper,你得到的只会是一个叫com.financialSystem.mapper名字的文件夹,而不是com/financialSystem/mapper这样的一个三层文件夹,但是这却在IDEA里看起来一摸一样的!!特别我是用的MybatisX插件生成的mapper和对应的xml,就出现了这个问题,让我一直以为插件没出错是我其他地方配置出错了。
所以你在resources里面使用目录去创建一样的路径时,你应该把.改成/,即应该输入:com/financialSystem/mapper,这样你创建的就是三层文件夹,这是跟在java包里创建文件夹有点区别的。
我的问题就是因为第五点路径的问题导致一直识别不到,看了一晚上的文章然后第二天重新学习了一些B站的Mybatis内容,突然就意识到了这个问题。