關於mybatis “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 錯誤的問題。
關於mybatis “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 錯誤的問題。
最近從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日志打印成功,整個人都輕松了。