问题背景
当Spring或Spring Boot项目整合MyBatis后启动后访问路径,没有获取到数据库的数据,控制台报以下错误,说明没有找到对应的xml文件。
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): xxxx
...
如果去查看编译生成的target文件夹,可以看到target文件夹里的mapper文件夹并没有相应的xml文件。
原因在于,默认情况下,如果没有指定resources,目前认为自动会将src/main/resources下的.xml文件放到target里头的classes文件夹下的package下的文件夹里。
那按照这个设定来讲,当然是会忽略其他位置的xml文件,因此自己需要手动配置来让mapper在编译后添加到target文件夹里。
解决方法
在build父标签中添加resources信息。resources用来哪些文件是否应该被迁移到编译后的文件夹中。将xml文件标记为应该迁移的文件后,便不会报出没有发现文件的异常。
在pom.xml中添加如下配置,因为我项目的mapper放在src目录下:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
添加后重新编译,如果mapper有被添加到target文件夹中,便可以成功运行项目。