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


 

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

 

 

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

xml文件名不需要和接口名一致,namespace和接口全類名一致即可。

 

 

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

 

 

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

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

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

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

 

 

4、看一下mybatis的配置對不對

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

 

 

5、看一下xml映射文件是否帶了后綴名.xml

這個很容易被忽略,一次SpringBoot中使用MyBatis時我調了半天,其它可能性都被排除了,愣是找不到原因,最后發現是我創建映射文件時直接輸入UserDaoMapper,沒帶后綴.xml。

你不帶后綴.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更新輸出目錄下的資源文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM