在實際項目,搭建mybatis會爆出 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 這個錯誤非常的頭疼,如圖1,不知道爲什麼mybatis就是找不到對應的xml文件。博主整理了三種可能的情況,三種情況下肯定有一種能幫助到你。
情況一:mapper.xml沒有按照傳統的maven架構進行放置
如果我們的mapper.xml文件沒有放置到src-main-resources下面,是不會被maven build plugin給默認掃描到的。此時需要修改啓動的模塊的pom文件,在build標籤裏面加入:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
下面這個好像有問題,只需要加入上面這段即可。
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
並推薦在Project Structure -> Modules中將你存放mapper的包給標註成resources
情況二:mybatis的配置信息出錯
博主給出所維護的項目的配置信息供讀者參考:
mybatis-plus.mapper-locations=classpath*:/mapper/**Mapper.xml
mybatis-plus.typeAliasesPackage=com.yuxun.**.entity
mybatis-plus.defaultStatementTimeout=120
mybatis-plus.config-locations=classpath:config/mybatis-config.xml
其中mybatis-plus.mapper-locations是寫mapper編譯過後的位置和名稱,可以參見圖2。
情況三:idea的編譯問題
該種情況非常的莫名其妙,可能是內存爆滿的原因導致的,idea有的時候沒有編譯生成相應的xml。在idea的target->classes下面沒有找到相應的存在xml的文件夾,該文件夾裏面有沒有對應的mapper(實體名).xml文件,如圖2。此時就算你採用重啓idea,Invalidate caches等方式都不管用。
最正確的做法是重新編譯工程,點擊導航欄build下面的rebuild project。