1. 程式人生 > >Invalid bound statement (not found) 的排查思路

Invalid bound statement (not found) 的排查思路

spring整合mybatis時,自己寫了一個junit測試,結果報

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zpf.mapper.IUserMapper.findUserById
    at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:189)
    at org.apache.ibatis.binding.MapperMethod
.<init>(MapperMethod.java:43) at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:58) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:51) at com.sun.proxy.$Proxy6.findUserById(Unknown Source) at com.zpf.junit.JunitTest.t1(JunitTest.java
:23) ...

於是自己開始一點一點的排查問題

1.首先檢視applicationContext中配置的bean是否配置正確

這裡寫圖片描述

2.檢視你的sqlMapConfig.xml對應的檔案

這裡寫圖片描述

我是這裡被坑了,注意:

如果mappers中使用 <package name = " " /> 或者 <mapper class = " " /> 這兩種方式中的其中一種方式指定時,mapper介面名稱和mapper對映檔名稱要相同,且放在同一個目錄中。

如果mappers中使用 <mapper resource= " " />這種方式使用相對於類路徑的資源 ,不需要mapper介面名稱必須和mapper對映檔名稱相同,也不需要放在同一個目錄中。

3.在檢查介面對應的userMapper.xml檔案

這裡寫圖片描述
這裡寫圖片描述

1.namespace要和介面的全名稱對應

2.id 要和介面中的方法名稱一致,以及輸入引數和輸出引數也要一致.

嗯,到這裡應該就可以排查出哪裡出問題了。