關(guān)于idea 中使用mybastis報(bào)出 Invalid bound statement (not found)的錯(cuò)誤解決方案

引言

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


圖1.爆出錯(cuò)誤的demo

情況一: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。

圖2,編譯后找不到對(duì)應(yīng)的UserMapper.xml

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í)間幫你解決。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容