org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)處理辦法
阿新 • • 發佈:2019-01-02
今天一下午處理了一個異常,記錄一下,防止自己以後忘了
控制檯資訊如下:
嚴重: Servlet.service() for servlet [springMVC] in context with path [/crm] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.itheima.dao.BaseDictDao.findAllDictItemNameByTypeCode] with root cause org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.itheima.dao.BaseDictDao.findAllDictItemNameByTypeCode
翻譯過來好像是:繫結語句無效,意思就是找不到,加上從網上找的總結處理辦法如下:
一般的原因是Mapper interface和xml檔案的定義對應不上,需要檢查包名,namespace,函式名稱等能否對應上,需要比較細緻的對比,我經常就是寫錯了一兩個字母搞的很長時間找不到錯誤
首先看看自己是否符合規範,規範如下:
Mapper介面開發需要遵循以下規範:
1、Mapper.xml檔案中的namespace與mapper介面的類路徑相同。
2、Mapper介面方法名和Mapper.xml中定義的每個statement的id相同
3、Mapper介面方法的輸入引數型別和mapper.xml中定義的每個sql 的parameterType的型別相同
4、Mapper介面方法的輸出引數型別和mapper.xml中定義的每個sql的resultType的型別相同
按以下步驟一一執行:
- 檢查xml檔案所在的package名稱是否和interface對應的package名稱一一對應(建議直接放在同一個包中)
- 檢查xml檔案的namespace是否和xml檔案的package名稱一一對應
- 檢查函式名稱能否對應上
- 檢查一下xml檔案和interface檔名是否相同
- 去掉xml檔案中的中文註釋
- 隨意在xml檔案中加一個空格或者空行然後儲存
一般來說到此就可以排除錯誤了