在寫好代碼的時候,編譯正常但是在調用接口的時候卻報 Invalid bound statement (not found):錯誤,這個錯誤有以下幾種可能
1.檢查xml文件所在package名稱是否和Mapper interface所在的包名
<mapper namespace="me.tspace.pm.dao.UserDao">
mapper的namespace寫的不對!!!注意系修改。
2.UserDao的方法在UserDao.xml中沒有,然后執行UserDao的方法會報此
3. UserDao的方法返回值是List<User>,而select元素沒有正確配置ResultMap,或者只配置ResultType!
4. 如果你確認沒有以上問題,請任意修改下對應的xml文件,比如刪除一個空行,保存.問題解決
5.看下mapper的XML配置路徑是否正確
重點來了!!!
當以上幾種可能都正確的情況下,看一看編譯器的target目錄下編譯好的的class文件,看一看mapper(按照自己起的名字找)文件夾下是否有xxxmapper.XMl文件加載進來
在以上五種情況都滿足的情況下應該就是這個問題了(IDE不加載.XML文件)
解決辦法:
在你IDE的pom文件中添加以下代碼:
<build>
<resources>
<!-- mapper.xml文件在java目錄下 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!-- mapper.xml文件在resources目錄下-->
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
這時找到maven依賴將下面代碼放進build節點中(如果pom文件中有build節點就可以省去build節點)