Invalid bound statement (not found) 的排查思路
阿新 • • 發佈:2019-01-07
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 要和介面中的方法名稱一致,以及輸入引數和輸出引數也要一致.
嗯,到這裡應該就可以排查出哪裡出問題了。