一、說明
造成MyBatis報Invalid bound statement (not found)錯誤有很多種,主要原因就是xxxMapper.java與xxxMapper.xml沒有正確綁定。沒有正確綁定的原因有很多種,所以導致有些人在網上百度查詢到別人的博客上寫的解決方法之後卻無法解決自己的問題,在此作一些方法總結。
二、錯誤產生原因及解決方法
2.1 映射xxxMapper.xml文件未被掃描
如果你使用的是Maven構建的項目,那麼因爲maven默認只是加載src/main/resources目錄下的配置文件,並不會主動加載src/main/java下的配置文件。如果你的Mybatis映射xml文件是與接口文件放在同一目錄下的話,就必須在pom.xml文件中加以上以下配置:
<!-- 如果不添加此節點mybatis的mapper.xml文件都會被漏掉。 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
2.2 接口名稱與xml映射文件名稱不一致
請檢查你的的xxxMapper.java文件與xxxMapper.xml文件名稱是否一致;
2.3xml映射文件中的namespace配置錯誤
namespace必須等於接口的完整類名
2.4 xml映射文件中的select/delete/update/insert等標籤的id值與接口中的方法名稱不一致
2.5xml映射文件中的select/delete/update/insert等標籤的parameterType的值與接口中的方法的參數的類型不一致
2.6 xml映射文件中的select/delete/update/insert等標籤的resultMap的type或resultType與接口中的方法的返回參數的類型不一致
2.7xml映射文件中的select/delete/update/insert等標籤中的databaseId的值在spring配置文件中未找到
以上整理的錯誤產生的原因並不全,以後再發生此問題如果不是以上收集的幾點時我會再作補充。