1. 程式人生 > >關於mybatis “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 錯誤的問題。

關於mybatis “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 錯誤的問題。

資源文件 classes intellij 總結 ibatis namespace select 兩種 ssm

困擾了我兩條的問題:

最近從eclipse轉到intellij idea,確實比eclipse好用太多,但是也是各種不熟悉,導致了很多問題,本來搭好的maven+ssm框架在eclipse上能用,遷移到idea中是各種問題,一一解決之後就剩下這個問題。org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) : org.dao.UserDao.selectByPrimaryKey,意思是我的mapper和dao的映射和接口綁定有問題。

技術分享圖片

我的spring和mybatis整合配置如下:

技術分享圖片

但我的mapper和dao中是一一對應的,所以我的問題不在這兒。
Junit測試一直是紅色的一條,這個問題讓我頭疼,網上看了很多資料最後發現是intellij idea的問題,在eclipse中把mapper的xml文件放到src代碼目錄下是可以一起打包進classes的,而在新版intellij idea中是不會一起打包,就會導致找不到xml報錯。

  • 首先確保xml中的namespace配置是你的接口全類名,而不是包名!
  • 確認dao接口中的方法,和xml中一一對應,返回類型,參數都正確。
  • 解決方法

    • 第一種,由於idea默認是不打包src中的xml文件,所以在eclipse中你可以把xml放到src中沒有問題,但是在idea中,你把mapper的xml文件放到resources資源中就可以正常訪問!

    • 第二種 在maven配置maven對資源文件的訪問,具體做法:在pom中,build節點中加入

    • 技術分享圖片

    • 總結

      以上兩種方法個人在intellij idea中親測成功。
      Junit測試通過。看著那一條變成綠色,log4j日誌打印成功,整個人都輕松了。

    • 文章為個人總結,只是想給遇到相同問題的朋友一個幫助,如有老司機覺得不對的,請指出,歡迎大家一起交流

關於mybatis “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 錯誤的問題。