轉:IDEA異常解決: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

IDEA異常解決: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

 

原文地址:https://www.cnblogs.com/jstarseven/p/5803697.htmlhtml

 

有時候解決問題不單單是解決問題。-----jstarsevenjava

 

最近採用了開發工具IDEA開發SSM開發框架完成後,發佈的時候出現org.apache.ibatis.binding.BindingException: Invalid bound statement (not found。。。apache

一開始覺得是本身配置文件寫的有問題找了半天也沒有問題,以後才發現是本身對IDEA工具使用的不夠熟悉。app

原來eclipse默認會幫你整合resources目錄下的mapper配置文件,而idea不能自動識別,須要額外配置。框架

 

先說該異經常看法決方案:eclipse

通常是xml映射文件有錯誤。可是這個提示不必定準確,以至網上有些資料說這個問題很奇怪。出現這個錯誤通常的解決方式在下面有說明:
 
通常的緣由是Mapper interface和xml文件的定義對應不上,須要檢查包名,namespace,函數名稱等可否對應上,須要比較細緻的對比。
 
按如下步驟一一執行:
1:檢查xml文件所在的package名稱是否和interface對應的package名稱一一對應
2:檢查xml文件的namespace是否和xml文件的package名稱一一對應
3:檢查函數名稱可否對應上
4:去掉xml文件中的中文註釋
5:隨意在xml文件中加一個空格或者空行而後保存(觸發了ide的自動編譯功能。因爲xml文件在編譯的時候,不必定總能當即從源目錄複製到class文件的編譯目錄(MyEclipse常常出這個問題),有時候你源目錄中的xml文件已經修改好了,而class所在的目錄裏面仍是舊的。所以真正肯定有效的方式是將正確的xml文件複製到class輸出目錄。)
 
(博主使用IDEA工具)
可是博主在嘗試以上方案以後仍然報錯,在我查看了發佈以後的源代碼以後,發現*Mapper.xml文件並無發佈到目標文件中。
如圖所示:
Mapper目錄:

發佈以後target目錄中:ide

竟然沒有xml文件,忽然意識到了異常的緣由:函數

idea中我將mapper類型是source,而xml文件在發佈時不會編譯,同時也不會發布到target中,致使項目運行時找不到mapper.xml文件。工具

解決方案:我將*Mapper.xml文件提取到指定文件夾mapper中,設置mapper文件夾類型爲resource,在application-dao.xml配置文件中添加圖片中框選的代碼對mapper文件進行掃描。問題解決。post

總結:

(1)eclipse、myeclipse、idea針對項目的文件處理方式不同。

eclipse和myeclipse中mapper.java和mapper.xml在同一目錄下,直接配置掃描不會出現上述問題。

(2)注意xml文件的準確性。

相關文章
相關標籤/搜索