1. 程式人生 > >org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)處理辦法

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)處理辦法

今天一下午處理了一個異常,記錄一下,防止自己以後忘了

控制檯資訊如下:

嚴重: 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的型別相同


按以下步驟一一執行:

  1. 檢查xml檔案所在的package名稱是否和interface對應的package名稱一一對應(建議直接放在同一個包中)
  2. 檢查xml檔案的namespace是否和xml檔案的package名稱一一對應
  3. 檢查函式名稱能否對應上
  4. 檢查一下xml檔案和interface檔名是否相同
  5. 去掉xml檔案中的中文註釋
  6. 隨意在xml檔案中加一個空格或者空行然後儲存

一般來說到此就可以排除錯誤了