MyBatis報錯:Invalid bound statement (not found)錯誤的可能原因


  這個問題比較簡單,其實出現這個問題實質就是mapper接口和mapper.xml文件沒有映射起來。

  有些細節可以逐一排查,常見的錯誤如下:

1、檢查xml文件所在package名稱是否和Mapper interface所在的包名

<mapper namespace="com.enmox.emcs.market.dao.MarketDao">

  mapper的namespace寫的不對!我之前是從別的模塊復制的,只改了 MarketDao,沒有改前面的 market.dao.MarketDao,導致報錯。

2、看下mapper的XML配置路徑是否正確

mybatis: mapper-locations: classpath*:mybatis/**/*.xml executor-type: simple config-location: classpath:mybatis-config.xml type-aliases-package: com.***.user.model,***,com.***.market.model

  type-aliases-package:配置映射類所在的包名

  這個有時候是報 ClassNotFound 的錯。

3、MarketDao 的方法在 MarketDao.xml 中沒有,然后執行MarketDao的方法會報此錯誤。

  即mapper接口中的方法名和mapper.xml中的id標簽不一致,這個問題解決方法一樣,仔細對對。

4、MarketDao 的方法返回值是 List<market>,而select元素沒有正確配置ResultMap,或者只配置ResultType!

5、以上問題都沒有,但是還是不行,可能原因就是,沒有構建進去,打開target看看對應的mapper.xml文件在不在

  如果不在的話,clean一下,maven項目,然后再啟動。

6、pom.xml文件中配置resource,不然mapper.xml文件就會被漏掉!pom.xml的中配置了resource,bug消失了~

<!-- 如果不添加此節點mybatis的mapper.xml文件都會被漏掉。 -->
<resources>
  <resource>
    <directory>src/main/java</directory>
    <includes>
      <include>**/*.properties</include>
      <include>**/*.xml</include>
    </includes>
    <filtering>false</filtering>
  </resource>
  <resource>
    <directory>src/main/resources</directory>
    <includes>
      <include>**/*.properties</include>
      <include>**/*.xml</include>
    </includes>
    <filtering>false</filtering>
  </resource>
</resources>

7、mapper-locations路徑配置不對:

// 原配置如下:
mybatis: mapper-locations: classpath:signin\src\main\resources\mapperxmlmapperxml/.xm 

//此為絕對路徑。修改配置路徑如下:
mybatis: mapper-locations: classpath:mapperxml/.xml

  之前是絕對路徑所以掃描不到,修改了之后再編譯,項目代碼就不是之前的絕對路徑了,已經到target目錄下了。


免責聲明!

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



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