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


原文出處http://www.yund.tech/zdetail.html?type=1&id=cd8448c2346bcaab58906d77caf73b6c

作者:jstarseven


 

有時候解決問題不僅僅是解決問題。-----jstarseven

最近因為開發需要,需要搭建一個ssm開發框架,采用了開發工具IDEA。

整合完了SSM開發框架之后,發布的時候出現org.apache.ibatis.binding.BindingException: Invalid bound statement (not found。。。

一開始以為是自己配置文件寫的有問題找了半天也沒有問題,之后才發現是自己對IDEA工具使用的不夠熟悉。

 

先說該異常常見解決方案

一般是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目錄中:

居然沒有xml文件,突然意識到了異常的原因:

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

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

總結:

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

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

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

 

 


 -END-


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM