原本準備研究下mybatis源碼執行流程的,就隨意搭建了個項目,全部配置以下:java
一切看似都是那麼的正常,然而執行的時候:Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.nijunyang.mybatis.mapper.UserMapper.insertUserapache
1.發現org.apache.ibatis.session.Configuration#mappedStatements始終是空的,等於說mapper文件的類容根本沒有被加載解析session
2.org.apache.ibatis.builder.annotation.MapperAnnotationBuilder#loadXmlResource加載xml根本沒有加載到mybatis
3.文件路徑看似都是對的,可是卻加載不到文件流org.apache.ibatis.io.Resources#getResourceAsStream(java.lang.ClassLoader, java.lang.String)app
各類找問題,覺得是名字不對等等,從新寫各項配置,結果仍是不行。最後恍然大悟,這配置文件是用classloader加載的,遂檢查jar包(class目錄)發現mapper.xml文件根本沒有編譯進去,再看pom文件,資源文件的打包配置空空如也。ui
因此看似正常的xml文件路徑,實則並不正常,由於在jar/class裏面並無將配置文件打進去spa
所以在源文件包裏面寫配置,pom文件必定要注意加上打包資源的配置3d
所以在源文件包裏面寫配置,pom文件必定要注意加上打包資源的配置xml
所以在源文件包裏面寫配置,pom文件必定要注意加上打包資源的配置
blog
默認的編譯只會將java源文件編譯出來的class文件打包走,而不會打包其餘文件,擼上<resources>節點萬事大吉