Mapped Statements collection does not contain value for XXX错误

本文记录了一个在整合MyBatis与Spring框架时遇到的错误:MappedStatements collection does not contain value for,原因在于XML文件名首字母大小写与Mapper接口不匹配,详细描述了排查过程及解决方案。

一个不该犯的错误

怎么说呢,这个bug报的实在太降低水平了,一是本就不该犯这个bug,二是这个bug竟然找了这么久。。。。

Mapped Statements collection does not contain value for 意思是在映射器语句里面没有包含相应的值,其实就是mapper的xml文件没有被加载,导致找不到。遇到bug,第一步是百度,发现大家报这个bug很多是配置不正确,但是我检查了又检查,这一块都是没问题的,于是我又检查了Mybatis是否有加载到这个xml,因为我用的是Spring,整合MyBatis的时候只要mapper和xml在统一路径下,Mybatis就可以自己根据namespace找到并加载。但是检查了又检查,却怎么也没发现问题,不断重导包也不行。

找了好久,最后我想去target目录看看xml是不是和mapper在同一路径,结果这一看就看出问题了,MD我的xml的文件名开头是小写!!这也就意味着我的Mapper和XML是不匹配的。。。。哎

org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.itheima.mapper.StudentMapper.findAllStudent ### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.itheima.mapper.StudentMapper.findAllStudent at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:135) at Test.MyBatisTest.findAllStudentTest(MyBatisTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.j
最新发布
03-13
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值