BindingException

197 阅读2分钟

解决在idea中SSM框架数据持久层中,找不到mapper接口中的方法问题:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.edu.cqust.services.BookService.selectById

网上解决办法(并没有解决我的问题),或许能够解决到你的问题:

  1. 检查xml文件所在的package名称是否和interface对应的package名称一一对应
  2. 检查xml文件的namespace是否和xml文件的package名称一一对应
  3. 检查函数名称能否对应上
  4. 去掉xml文件中的中文注释
  5. 随意在xml文件中加一个空格或者空行然后保存

在idea中:

  1. 在数据持久层dao的配置文件中,进行如下配置:

    <!--        扫描Dao包,创建动态代理对象,会自动存储到Spring IoC容器中-->
    <!--        注意:这里的cn.edu.cqust.dao必须是一级一级的目录,而且必须是cn.edu.cqust.dao,与dao接口路径一致,并不是一个文件夹,所以需要一级一级的去进行建立-->
    <!--        也可以使用<mybatis:scan base-package="cn.edu.cqust.dao"/>来进行代替,但都需要保证,在编译文件目录中的cn.edu.cqust.dao下面有编译的BookMapper.xml文件-->
    <!--        因为最终的目的是需要:在编译生成的文件路径中,要保证,dao层接口与对应的xml映射文件在同一路径,这样dao层接口才能访问到对应的sql语句接口-->
            <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!--                一定要扫描的dao的包-->
                    <property name="basePackage" value="cn.edu.cqust.dao"/>
            </bean><!--        程序配置使用自动扫描来识别容器中所有Mappe组件让程序自动扫描org.crazyit.app.dao包所有的Mapper组件-->
    <!--        <mybatis:scan base-package="cn.edu.cqust.dao"/>-->
    

    如果想要使用mybatis:scan这个标签的话,需要添加mybatis的schema路径,这里附上全部的schema:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://mybatis.org/schema/mybatis-spring
        http://mybatis.org/schema/mybatis-spring.xsd">
        
    </beans>
    
  2. 在idea中的resources下如果直接创建文件夹为cn.edu.cqust.dao,那么只会生成一个文件夹,且名称如cn.edu.cqust.dao,如下图所示:

    image.png

    正确、简介的创建文件夹方式为:

    光标放在resources上,右键->new->Directory->cn/edu/cqust/dao,如下图所示:

    image.png

  3. 所以需要自己手动,一个一个文件夹目录的生成,生成的目录结构如下图所示:

    image.png

  4. 经过这样配置了之后,会发现,在经过idea编译之后,得到的编译文件,target下cn.edu.cqust.dao下面既有BookMapper接口也有BookMapper.xml配置文件,具体项目路径如下图所示:

    image.png