org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
同樣,自己沒找到問題之后百度搜索方案。問題大致意思為:mybatis中dao接口與mapper配置文件在做映射綁定的時候出現問題,簡單說,就是接口與xml要么是找不到,要么是找到了卻匹配不到。
網上解決方案:
按以下步驟一一執行:
1:檢查xml文件所在的package名稱是否和interface對應的package名稱一一對應
2:檢查xml文件的namespace是否和xml文件的package名稱一一對應
3:檢查函數名稱能否對應上
4:去掉xml文件中的中文注釋
5:隨意在xml文件中加一個空格或者空行然后保存
但是我按照這個順序反復排查無果,最后發現在 src/target/classes/... 目錄下只有.java文件,沒有與之對應的xml文件,意思是xml
文件沒有編譯過來。
解決方案:
1,直接把對應的xxxMapper.xml復制到 src/target 的.java文件同級目錄下,
2,在pom.xml文件的build中添加如下,注意<resource>寫在<resources>里面:
這樣以后的xxMapper.xml文件就都會自己編譯進來,運行,成功!
以上情況屬於xml文件在 src/main/java 里面得到解決,如果xml放在與java同級目錄時,如下:
在mybatis和hibernate得項目中,有時會把xml放在java目錄外邊,但是idea也沒有進行編譯,這時也在pom.xml文件中配置:
再運行,成功跑起來。
再后來,idea創建的項目沒有出現過xml未編譯情況,總結發現:
之前創建項目使用的是idea默認的maven,如圖
在這里我選擇自己安裝的maven,創建的項目xml都正常編譯,希望可以幫到小伙伴們脫離這個問題!