【常規解決辦法】
如果出現:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
一般的原因是Mapper interface和xml文件的定義對應不上,需要檢查包名,namespace,函數名稱等能否對應上,需要比較細致的對比,我經常就是寫錯了一兩個字母搞的很長時間找不到錯誤
按以下步驟一一執行:
1:檢查xml文件所在的package名稱是否和interface對應的package名稱一一對應
2:檢查xml文件的namespace是否和xml文件的package名稱一一對應
3:檢查函數名稱能否對應上
4:去掉xml文件中的中文注釋
5:隨意在xml文件中加一個空格或者空行然後保存
一般來說到此就可以排除錯誤了
【我遇到的問題】
本地無問題,發布到服務器就無法登錄。
錯誤日志:Should roll back transaction but cannot - no transaction available
進一步定位(通過調整代碼順序):org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
【出錯原因】
war包中找不到Mybatis的*Mapper.xml文件
【解決】
在pom.xml中配置:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include><!-- 此配置不可缺,否則mybatis的Mapper.xml將會丟失 -->
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>