剛開始學(xué)習(xí)的童鞋經(jīng)常會(huì)遇到這樣的題:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
出現(xiàn)這個(gè)問(wèn)題的原因一般是:
Mapper interface和xml文件的定義對(duì)應(yīng)不上(需要檢查包名,namespace)
函數(shù)名稱等能否對(duì)應(yīng)不上(需要比較細(xì)致的對(duì)比诗越,經(jīng)常就寫錯(cuò)了一兩個(gè)字母搞的很長(zhǎng)時(shí)間找不到錯(cuò)誤)
解決的思路一般是:
檢查xml文件所在的package名稱是否和interface對(duì)應(yīng)的package名稱一一對(duì)應(yīng)
檢查xml文件的namespace是否和xml文件的package名稱一一對(duì)應(yīng)
檢查函數(shù)名稱能否對(duì)應(yīng)上
去掉xml文件中的中文注釋
隨意在xml文件中加一個(gè)空格或者空行然后保存
以上的內(nèi)容都特別容易手誤寫錯(cuò),不過(guò)可以通過(guò)一款非常棒的插件避免以上的問(wèn)題:Free Mybatis plugin
使用該插件后瞧捌,點(diǎn)擊在mapper文件中的namespace的類名折联,如果能點(diǎn)進(jìn)去涕癣,則說(shuō)明 namespace和interface的package名稱是沒(méi)問(wèn)題的:
點(diǎn)擊mapper文件中的這個(gè)綠色小箭頭彬祖,如果能點(diǎn)到interface中的方法,則說(shuō)明函數(shù)名稱對(duì)應(yīng)上了:
另一個(gè)場(chǎng)景就比較厲害了纽竣,????????墓贿,可能有些同學(xué)根據(jù)以上的幾點(diǎn),認(rèn)真檢查了好幾遍蜓氨,依然報(bào)錯(cuò)聋袋,要抓狂了....
此時(shí),一般就是xml文件的編譯問(wèn)題语盈。
編譯前的文件:
編譯后的文件:
阿西吧舱馅,終于找到問(wèn)題,的確是沒(méi)有將xml文件編譯進(jìn)去刀荒,那怎樣解決呢?
解決方式一:把*Mapper.xml文件放到resource文件夾下管理
解決方式二:在pom.xml中的build的標(biāo)簽中加入以下內(nèi)容:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</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>
至此棘钞,該問(wèn)題完美解決缠借。撒花,????????????????????????