今天一下午处理了一个异常,记录一下,防止自己以后忘了
控制台信息如下:
严重: Servlet.service() for servlet [springMVC] in context with path [/crm] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
com.itheima.dao.BaseDictDao.findAllDictItemNameByTypeCode] with root cause
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.itheima.dao.BaseDictDao.findAllDictItemNameByTypeCode
翻译过来好像是:绑定语句无效,意思就是找不到,加上从网上找的总结处理办法如下:
一般的原因是Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上,需要比较细致的对比,我经常就是写错了一两个字母搞的很长时间找不到错误
首先看看自己是否符合规范,规范如下:
Mapper接口开发需要遵循以下规范:
1、Mapper.xml文件中的namespace与mapper接口的类路径相同。
2、Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
3、Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
4、Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
按以下步骤一一执行:
- 检查xml文件所在的package名称是否和interface对应的package名称一一对应(建议直接放在同一个包中)
- 检查xml文件的namespace是否和xml文件的package名称一一对应
- 检查函数名称能否对应上
- 检查一下xml文件和interface文件名是否相同
- 去掉xml文件中的中文注释
- 随意在xml文件中加一个空格或者空行然后保存
一般来说到此就可以排除错误了