本身使用Springboot搭建web項目,以前都是使用註解形式來執行sql獲取查詢內容,此次本承着閒得無聊試一試的想法,突發奇想一想用xml的方式執行sql。很走心的參照本身以前spring項目的書寫格式,順便百度了也就幾十個springboot搭建的問題,終於把xml的相關配置弄好。天知道,get請求經過瀏覽器訪問接口怎麼就報了invalid bound statement (not found)的錯誤。java
OK,這點小事怎麼可貴住我,接着在度娘和谷哥之間換了千百種姿式找解決方案。總結出如下這幾種方法,能夠解決大多數invalid bound statement (not found)的問題:mysql
================ 華麗的分割線 ================web
【1】spring
網上總結的通常緣由 Mapper interface和xml文件的定義對應不上,須要檢查包名,namespace,函數名稱等可否對應上。 按如下步驟一一執行:
一、檢查xml文件所在的package名稱是否和interface對應的package名稱一一對應
二、檢查xml文件的namespace是否和xml文件的package名稱一一對應
三、檢查函數名稱可否對應上
四、去掉xml文件中的中文註釋
五、隨意在xml文件中加一個空格或者空行而後保存
sql
【2】瀏覽器
在使用IDEA開發時,若是打包時*Mapper.xml沒有自動複製到class輸出目錄的mapper類包下,則須要在pom文件中添加mybatis加載配置文件的配置! 以下:springboot
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
複製代碼
經過在pom文件中添加mybatis加載配置文件,完美解決遇到的問題了。bash
【3】mybatis
在application.yml中修改:app
mybatis: mapper-locations: classpath:mybatis/mapper/mysql/*.xml
================ 華麗的分割線 ================
以上是總結谷哥和度娘上輸出最多的解決方案,但我本身項目的問題其實遠比上述解決方案要顯得白癡:
如第【2】中解決辦法所說,編譯後的xml文件沒有輸出到mapper包下,就在各類找方案,怎麼能達到這種效果。
嘗試過第【2】種方案無果,後嘗試從新使用註解的方式,發現sql正常執行,說明註解的方式可使用,那必定是xml文件的方式哪裏配置的不對。
再後來直接把xml文件放到mapper包下,發現編譯後xml文件就輸出到了mapper包下,說明把xml和mapper接口放在一個目錄下是能解決這個問題的。不過一個目錄下既放xml又放java文件感受很奇怪,就繼續找方法,看怎麼能把xml文件和mapper分開,可是編譯後的文件放在一個目錄下,也就是xml方式能夠正常進行正常的sql使用。
在百度無果幾近絕望的時候,偶然一篇帖子彷彿讓我看到了但願的曙光。裏面說idea編譯器中文件夾要一層一層的建立,一次性把整個目錄建立出來中間妄圖用「.」分隔開,編譯器是不識別的。因此將信將疑的嘗試着在resources目錄下對應mapper接口的目錄層級,一層一層把對應目錄也建立出來,最後把xml文件扔進新建立的目錄下。
奇蹟真的發生了~~!!!!!!
就這樣,編譯後xml和mapper接口放到一個目錄下來了,瀏覽器中訪問接口,接口也訪問通了。
真是山重水複疑無路,絕望盡頭就是柳暗花明處。