解決MyBatis報錯 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

 

總結了常見的解決方式,以下java

 

 

一、檢查xml文件的namespace是否對應接口,要是全路徑。mybatis

xml文件名不須要和接口名一致,namespace和接口全類名一致便可。app

 

 

二、xml中的函數id和接口中的函數名是否對得上,參數類型、返回值類型是否對得上maven

 

 

三、去看輸出目錄中有沒有xml映射文件,maven項目默認把資源文件放在src/main/resources下,默認只識別src/main/resources下的資源文件。函數

若是你把xml映射文件等資源文件放到src/main/java的某個目錄下,識別不了,須要在pom.xml中配置一下:spa

    <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>

把資源文件的路徑都寫進去。code

 

 

四、看一下mybatis的配置對不對xml

#實體類別名
mybatis.type-aliases-package=com.chy.xm_mall.model
#映射文件的位置
mybatis.mapper-locations=classpath:mapper/*.xml

 

 

五、看一下xml映射文件是否帶了後綴名.xmlblog

這個很容易被忽略,你不帶後綴.xml,IDEA根據文件內容能識別它是xml文件,顯示的圖標也是xml文件的,但不帶.xml後綴就不是映射文件,運行時識別不了。接口

第二個纔是正確的。

 

 

一些經常使用方法

  • 看輸出目錄有沒有xml映射文件
  • 刪掉輸出目錄,從新編譯運行,由於輸出目錄下的資源文件可能沒有更新

 

 

未來可能會出現的

xml的dtd聲明要與使用的mybatis版本保持一致

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

這是mybatis3的聲明,未來若是使用更高版本的mybatis,注意dtd聲明也要對應。

 

 

未驗證的

  • 去掉xml文件中的中文註釋
  • 隨意在xml文件中加一個空格或者空行而後保存。想來這個和刪除輸出目錄的目的同樣,都是以爲刪除目錄的資源文件(xml映射文件)沒有更新,手動修改下文件,提醒IDEA更新輸出目錄下的資源文件。
相關文章
相關標籤/搜索