引言
在實(shí)際項(xiàng)目,搭建mybatis會(huì)爆出 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 這個(gè)錯(cuò)誤非常的頭疼,如圖1,不知道為什么mybatis就是找不到對(duì)應(yīng)的xml文件。博主整理了三種可能的情況,三種情況下肯定有一種能幫助到你。

情況一:mapper.xml沒(méi)有按照傳統(tǒng)的maven架構(gòu)進(jìn)行放置
傳統(tǒng)的maven架構(gòu)目錄可以參考博主的另外一個(gè)博文:http://www.itdecent.cn/p/477ad2e14150
如果我們的mapper.xml文件沒(méi)有放置到src-main-resources下面,是不會(huì)被maven build plugin給默認(rèn)掃描到的。此時(shí)需要修改啟動(dòng)的模塊的pom文件,在build標(biāo)簽里面加入:
<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的包給標(biāo)注成resources
情況二:mybatis的配置信息出錯(cuò)
博主給出所維護(hù)的項(xiàng)目的配置信息供讀者參考:
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是寫(xiě)mapper編譯過(guò)后的位置和名稱(chēng),可以參見(jiàn)圖2。
情況三:idea的編譯問(wèn)題
該種情況非常的莫名其妙,可能是內(nèi)存爆滿(mǎn)的原因?qū)е碌?,idea有的時(shí)候沒(méi)有編譯生成相應(yīng)的xml。在idea的target->classes下面沒(méi)有找到相應(yīng)的存在xml的文件夾,該文件夾里面有沒(méi)有對(duì)應(yīng)的mapper(實(shí)體名).xml文件,如圖2。此時(shí)就算你采用重啟idea,Invalidate caches等方式都不管用。
最正確的做法是重新編譯工程,點(diǎn)擊導(dǎo)航欄build下面的rebuild project。

ps:第三種情況常常見(jiàn)于,本來(lái)項(xiàng)目好好的可以掃描到mybatis的配置的,但是加了一個(gè)方法或者某一次run起來(lái)就突然報(bào)這個(gè)錯(cuò)誤的情況。
總結(jié)
三種解決方式是目前看到網(wǎng)上遇到問(wèn)題小伙伴們提出來(lái)總結(jié)的。如果三種方法中的一種解決了你的問(wèn)題,請(qǐng)給博主點(diǎn)個(gè)贊。如果沒(méi)有解決,歡迎在評(píng)論里給博主留言,博主一定抽時(shí)間幫你解決。