IDEA org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): xxx
阿新 • • 發佈:2018-12-23
前言
在IDEA上執行Mybatis+Spring時,總是能碰到Eclipse上碰不到的問題,在Eclipse上沒一點問題,下面將錯誤即解決辦法記錄下來,希望可以幫到更多的人。
具體情況
由於我這邊的mapper.xml檔案是放在dao包下面的,和dao層介面放到同一個目錄,在IDEA上不會編譯src/main/java
目錄下的xml檔案,因為IDEA預設是編譯resources
目錄下的mapper.xml檔案即使你配置了也不會編譯,看下圖。
編譯後的classes,在專案目錄下的target目錄下。
可以看到編譯後的目錄下沒有生成我們想到的 IApiInfoDAO.xml檔案,所以執行的時候會出現異常。
具體異常如下:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.javaex.uscat.dao.user_info.IApiInfoDAO.select
解決辦法
1、可以將所有的mapper.xml放到resources目錄下。
2、可以在pom.xml檔案下新增下面配置即可。
<build> <resources> <!-- mapper.xml檔案在java目錄下 --> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build>
修改完成之後先clean一下,避免編譯的時候出問題,修改完從生新 install 一下可以看到,mapper.xml檔案在classes目錄下生成了。
補充
這裡補充幾個Mybatis的知識。
1、Mapper.java 和 Mapper.xml命名需要一致
2、包掃描能不能掃到.xml檔案
3、Mapper.xml的namespace配置是否準確,介面方法名是否準確
總結
1、以後碰到類似not found 的提示一定要記得檢查編譯到的檔案有沒有編譯完成。