您的位置:首页 > 移动开发

Invalid bound statement (not found): com.zhiyou100.video.mapper.SpeakerMapper.speakerTotalCount

2017-08-18 19:09 351 查看
Invalid bound statement (not found): com.zhiyou100.video.mapper.SpeakerMapper.speakerTotalCount

根据提示可以看出,以上问题的出现表明在mybatis的参数绑定时出现了错误。

作为一个初学者。我先整理一下我的思路。

mapper要发挥作用,需要再web.xml中配置spring-mybatis.xml的扫描路径如下所示:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml,
classpath:spring-mybatis.xml
</param-value>
</context-param>


当然,这个classpath:spring-mybatis.xml可以根据自己的需求进行修改。

<context-param>
< param-name>contextConfigLocation</param-name>
< param-value>classpath*:**/applicationContext-*.xml</param-value>
< /context-param>

----------

"**/"表示的是任意目录;
"**/applicationContext-*.xml"表示任意目录下的以"applicationContext-"开头的XML文件。
你自己可以根据需要修改。最好把所有Spring配置文件都放在一个统一的目录下,如:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring/applicationContext-*.xml</param-value>
</context-param>


如果,这个扫描配置的话,那么就进行下一步。

2. 查看spring-mybatis.xml中关于mapper接口的映射。为什么说是mapper接口的映射呢。代码如下:

<!-- 扫描mybatis映射接口类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.zhiyou100.video.mapper" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>


因为所有的mapper.java都是接口,只是对应一些方法,而在对应的mapper.xml才写入sql操作。这个是mybatis的特性。

<property name="basePackage" value="com.zhiyou100.video.mapper" />


所以在以上这行代码中,value后面所跟的就是存放所有的mapper接口的包的根目录。

如果上面两步没有什么问题的话,就进行第三步。

3. 检查mapper.xml中的id名字,parameterType(参数类型),resultType(返回值类型)是否正确,接着就是sql语句的检查。有时候sql语句也可能是报错的关键。

然而最重要的是,切记切记,名称,单词不要写错(mapper.java 和mapper.xml 的名称一定要一样。我就是因为mapper.xml和mapper.java的名称不一致导致的错误。这个问题最难检查出来了)

其实还有一个错误点:

那就是在xml文件中mapper标签的 namespace(命名空间)没有填写或者是namespace不正确,这个很重要因为他是链接mapper.java和mapper.xml之间的桥梁。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web.xml mybatis