Mapped Statements collection does not contain value for xxx

这是我第二次遇到的这个问题了,总结下。

第一次的问题是

mybatis的sqlSessionFactory的mapperLocations,配置的是这个路径下的所有映射文件,但是我没写的没有在该路径下,

所有mybatis没有加载我得映射文件,所有就找不到映射文件对应的id。


这次又是另外一个问题

mbatis加载了你的映射文件,但是呢我的id多了个空格,看了好多遍都没发现多了个空格,可能是背景黑色的缘故,强行解释下

哈哈,半个小时没发现问题所在

先看错误信息

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for ProjectStaffDomain_logicDeleteByProjectId
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for ProjectStaffDomain_logicDeleteByProjectId
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:371)
	at com.sun.proxy.$Proxy28.update(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:254)
	at com.hzhy.framework.core.dao.MybatisGenericDao.update(MybatisGenericDao.java:199)

意思是:没有sql文件中没有定义id为“xxx",一般有以下几种情况

1.mybatis的映射文件的命令空间与接口的全限定名不一致;

2有可能mybatis的映射文件名字与接口的类名字不一致;

3.还有一种情况就是接口声明的方法在映射文件里面没有。

我的sql

<!-- 逻辑删除通过 project_id-->

   <update id=" ProjectStaffDomain_logicDeleteByProjectId" parameterType="com.hzhy.manager.project.domain.ProjectStaffDomain">
   update project_staff set sts='N',modify_time = now(),modify_user_id = #{modify_user_id}  where project_id = #{project_id}
  </update>

  

但我一直没发现我的id前面多了个空格,各种百度,结果都没发现这个问题,呜呜呜~ ~ ~ ~

总结:编程不需要眼力,哈哈

原文地址:https://www.cnblogs.com/wanlipenghtml/p/11194782.html