關於idea 中使用mybastis報出 Invalid bound statement (not found)的錯誤解決方案

在實際項目,搭建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。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章