Mybatis繫結錯誤的原因及其解決整理
阿新 • • 發佈:2019-01-10
(專案開發某天,遇到這個錯誤,很鬱悶找了幾個小時才有解決)
在使用Maven整合Spring + SpringMVC + MyBatis專案的時候專案的時候報以下錯誤
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
原因一:
Mapper interface和xml檔案的定義對應不上,需要檢查包名,namespace,函式名稱等能否對應上,需要比較細緻的對比,我經常就是寫錯了一兩個字母搞的很長時間找不到錯誤
按以下步驟一一執行:
1:檢查xml檔案所在的package名稱是否和interface對應的package名稱一一對應
2:檢查xml檔案的namespace是否和xml檔案的package名稱一一對應
3:檢查函式名稱能否對應上
4:去掉xml檔案中的中文註釋
5:隨意在xml檔案中加一個空格或者空行然後儲存
原因二:(我是這個原因)
在使用IDEA開發時,打包時,mapper沒有自動複製到響應位置,也會出錯。
maven預設會把src/main/resources下的所有配置檔案以及src/main/java下的所有java檔案打包或釋出到target\classes下面,但是現實我們可能
會在src/main/java下面也放置一些配置檔案如hibernate配置檔案或mybatis mapper配置檔案等,如果不做一些額外配置,那我們打包後的專案可能找
不到這些必須的資原始檔,因此在pom.xml中增加類似如下配置:
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> </build>
這是我目前找到的解決方法,如果還有可以在下面留言。