剛開始學習的童鞋經常會遇到這樣的題:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
出現這個問題的原因一般是:
Mapper interface和xml文件的定義對應不上(需要檢查包名,namespace)
函數名稱等能否對應不上(需要比較細致的對比,經常就寫錯了一兩個字母搞的很長時間找不到錯誤)
解決的思路一般是:
檢查xml文件所在的package名稱是否和interface對應的package名稱一一對應
檢查xml文件的namespace是否和xml文件的package名稱一一對應
檢查函數名稱能否對應上
去掉xml文件中的中文注釋
隨意在xml文件中加一個空格或者空行然后保存
以上的內容都特別容易手誤寫錯,不過可以通過一款非常棒的插件避免以上的問題:Free Mybatis plugin
使用該插件后,點擊在mapper文件中的namespace的類名,如果能點進去,則說明 namespace和interface的package名稱是沒問題的:
點擊mapper文件中的這個綠色小箭頭,如果能點到interface中的方法,則說明函數名稱對應上了:
另一個場景就比較厲害了,????????,可能有些同學根據以上的幾點,認真檢查了好幾遍,依然報錯,要抓狂了....
此時,一般就是xml文件的編譯問題。
編譯前的文件:
編譯后的文件:
阿西吧,終于找到問題,的確是沒有將xml文件編譯進去,那怎樣解決呢?
解決方式一:把*Mapper.xml文件放到resource文件夾下管理
解決方式二:在pom.xml中的build的標簽中加入以下內容:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
至此,該問題完美解決。撒花,????????????????????????