这是我第二次遇到的这个问题了,总结下。
第一次的问题是
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前面多了个空格,各种百度,结果都没发现这个问题,呜呜呜~ ~ ~ ~
总结:编程不需要眼力,哈哈