錯誤: Mapped Statements collection does not contain value for XXX.

仍是在項目中, 跳出以上提示, 注意以上提示的細節"Mapped"一詞, 它是被動語態的, 是"在已經匹配(Mapped)的語句(Statements)中"的意思, 說明JVM已經找到了一些Mapper的xml文件, 但"does not contain value for XXX", 也就是JVM找到的xml文件中沒有你想要使用的'XXX'這款. 那麼, 怎麼解決這個問題?!html

網上的資料, 大體分類以下:spring

1.命名空間配置錯誤: <mapper namespace="com.sitech.mapper.StudentMapper">, 要寫全到"StudentMapper"爲止[ref];sql

2.若是使用Maven管理項目, 則多是Mapper的xml文件沒有編譯到target中(pom.xml的build配置項)[ref];mybatis

3.還有, 配置中沒有引入Mapper的xml文件[ref];app

第3點的狀況和個人狀況相似, 個人是'引入出錯'(我要引入的文件夾是'mapperXml', 卻沒有修改COPY過來的配置代碼, 死活沒有去檢查這段代碼), 錯誤代碼以下(在'spring-mybatis.xml'中):框架

<!-- 引入myBatis文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath*:mapper/*.xml"/>
    <!-- 上一行末尾: 'mapper'要改爲'mapperXml' -->
</bean>

<!-- 10月30日, 又新增一個錯誤致使相同的報錯, 見下: -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.datareport.modules.NewUser.dao.NewUserDao">
    <!-- 錯誤緣由: 大小寫沒弄對(namespace中的'NewUser'應爲小寫開頭, 由於包文件名是'newUser')  -->
    <select ...>
        ...
    </select>
</mapper>

錯誤可以修改掉, 但根本上, 若是不瞭解整個WEB項目框架的機制, 也只能是修修補補, 東邊的磚搬到西邊去, 造不了大廈, 因此, 多看官方資料和源碼, 以及實踐學習中的(即擼碼上項目Just_For_Fun), 因此, 少年, 加油吧.學習

相關文章
相關標籤/搜索