zoukankan      html  css  js  c++  java
  • org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    本文转自:http://ljhzzyx.blog.163.com/blog/static/38380312201412453629988/

    Mybatis常会出现下面异常,这一般是xml映射文件有错误。但是这个提示不一定准确,以致网上有些资料说这个问题很奇怪。出现这个错误一般的解决方式在下面有说明:

    http://blog.csdn.net/softwarehe/article/details/8889206

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

      一般的原因是Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上。

    按以下步骤一一执行:

    1:检查xml文件所在的package名称是否和interface对应的package名称一一对应

    2:检查xml文件的namespace是否和xml文件的package名称一一对应

    3:检查函数名称能否对应上

    4:去掉xml文件中的中文注释

    5:随意在xml文件中加一个空格或者空行然后保存

      以上步骤除第5步,其他步骤没什么问题。第5步看起来这么怪异的解决方式,实际上是触发了ide的自动编译功能。由于xml文件在编译的时候,不一定总能立即从源目录复制到class文件的编译目录(MyEclipse经常出这个问题),

    有时候你源目录中的xml文件已经修改好了, 而class所在的目录里面还是旧的。因此真正确定有效的方式是将正确的xml文件复制到class输出目录。

      还有种情况会出这个错误,比如配置xml映射文件需要满足特定要求  

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
              p:dataSource-ref="dataSource" 
              p:configLocation="classpath:mybatis-config.xml">
        <property name="mapperLocations">
               <list>
                   <value>classpath*:mapper/com/xxx/**/*Mapper.xml</value>      <-- 我的错误是这里的路径加载错了 -->
               </list>
         </property>
    </bean>

      如上只有Mapper结尾的xml文件才会被Mybatis扫描到,这个时候如果忘记了这个规则,xml使用了其他名称,如xxxDao.xml。这样xml的配置就不会加入到Mybatis存储配置的一个map对象里去,也会出现 Invalid bound statement

    的错误。解决方法就是把xml文件改名即可。

  • 相关阅读:
    计算机体系结构的铁律(iron law)
    PHP 画图——使用jpgraph画图
    理解Paxos Made Practical
    【bzoj1015】【JSOI2008】【星球大战】【并查集+离线】
    Spark调研笔记第3篇
    hduoj2094产生冠军
    使用HD/IDE层的ioctl接口获取磁盘容量get_hdd_max_sector
    给GridView设置行高
    tomcat的一些简单配置
    【JavaScript】--JavaScript总结一览无余
  • 原文地址:https://www.cnblogs.com/xbq8080/p/6410163.html
Copyright © 2011-2022 走看看