org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)处理办法

今天一下午处理了一个异常,记录一下,防止自己以后忘了

控制台信息如下:

严重: 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的类型相同

按以下步骤一一执行:

  1. 检查xml文件所在的package名称是否和interface对应的package名称一一对应(建议直接放在同一个包中)
  2. 检查xml文件的namespace是否和xml文件的package名称一一对应
  3. 检查函数名称能否对应上
  4. 检查一下xml文件和interface文件名是否相同
  5. 去掉xml文件中的中文注释
  6. 随意在xml文件中加一个空格或者空行然后保存

一般来说到此就可以排除错误了

你可能感兴趣的:(SSM)