java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for xxx的解决方案

文章讲述了在启动webapp项目时遇到MyBatis报错,问题根源在于目录结构错误,导致mapper.xml文件未被正确识别。错误表现为MappedStatements集合中找不到指定的查询id。作者通过检查发现文件夹在IDEA中的显示与实际结构不符,调整为符合应用配置的目录结构后问题得到解决。提醒开发者注意项目原有的目录结构和配置文件的对应关系。
摘要由CSDN通过智能技术生成

纪念一次犯蠢事件


启动webapp项目时,碰到了如下报错(错误信息提示主要是前面几行,后面的没加进来):

BaseController - org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for elecsteal_data.selectAll
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for elecsteal_data.selectAll
org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:371)
com.sun.proxy.$Proxy13.selectList(Unknown Source)
org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:198)
com.ctbr.baseFrame.dao.BaseDao.selectList(BaseDao.java:37)
com.ctbr.baseFrame.dao.PageServiceDao.queryPageResult(PageServiceDao.java:30)
com.ctbr.elecsteal.service.impl.DataServiceImpl.queryPageForMap(DataServiceImpl.java:68)
com.ctbr.elecsteal.service.impl.DataServiceImpl$$FastClassBySpringCGLIB$$15ac65ba.invoke(<generated>)

这个报错网上一搜其实有不少文章,基本有四种原因:

1. sql的 id 值不匹配

2.namespace 没有引用正确

3.mapper.xml中的方法和接口mapper的方法不对应 

4.没有加入到mybatis-config.xml中(即总的配置文件)

但是我出现了第五种,就是文件目录结构错了,在模仿原来项目创建文件夹的时候,我创建的文件夹在电脑中显示是这样的:

这样子在idea中呈现的效果和二级目录的一样(真的一模一样,导致我一点没怀疑是这里的问题,直到我今天用svn需要复制自己写的代码,才发现目录结构的问题),idea效果如下(蓝色框是二级目录呈现的,红色框是我犯的错):

解决方案就是把目录结构都统一成这样:

改成这样的目录结构也是因为在我的applicationContext.xml文件中有定义mapper.xml文件的路径:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
   	<property name="dataSource" ref="dataSource" />
	<property name="mapperLocations" value="classpath*:com/ctbr/**/mapper/*.xml" />
</bean> 

 所以如果跟我一样是在已有项目基础上续写的朋友们,写的时候一定观察好原项目的各个组成结构

 

 

 

  

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值