项目背景
在搭建springboot项目用于学习时,编写了一个简单的根据主键查询的controller,service,mapper,在浏览器输入路由后,应该输出对应的json数据,但是我测试时发现后台报错,报错内容如下:Invalid bound statement (not found):XXX(注:XXX为mapper文件路径)
解决思路
- 问题可能原因1
一般这种问题有可能是你的mapper.xml文件的namespace路径错误,或者方法名称错误,亦或是入参与出参不匹配比如出参类型错误,或者包名称错误,不过经过我仔细排查后发现这些路径与参数类名并没有错误,因此我怀疑是第二种原因 - 问题原因2
我查找了target文件夹下,发现在target/mapper文件夹下只有我的mapper接口,而没有*.xml文件,于是我猜测应该是xml文件未被识别,一般来说xml文件是放在resources文件夹下。但是我这个由于是自己随手写的学习项目,所以我的mapper接口和xml文件放在了一起,如下:
所以,解决办法是让项目将java目录和resources目录下的xml文件都扫描,因此需要在pom文件中的build标签下添加如下:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
然后执行clean,再install。之后便可以在target文件夹下找到相关的*.xml文件,重新运行项目,访问成功。