• 使用maven整合mybatis时出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)


    分析原因是mybatis的映射文件的问题,首先进行分析排查:

    1.检查mapper接口和对应的xml文件的包名是否对应

    2.检查xml文件的namespace与mapper接口的包名是否对应

    3.检查mapper接口的函数名字与xml文件中的方法的id是否一致

    4.如果是ssm整合工程的话,应该检查一下在spring-mybatis的配置文件applicationContext-dao.xml(这里的名字不唯一,这里是为了统一名字)有没有加载进web.xml中。

     5.如果是普通的ssm项目,则这样配置:
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="druidDataSource"/>
    <property name="configLocation" value="classpath:mybatis-config.xml"/>
    <!-- 配置mapper文件的位置 -->
    <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>

    一般的错误此时已经可以基本解决了。

    如果还没有解决的话,我们可以考虑是xxxMapper.xml文件没有编译到classes文件中,或者是路径错误访问不到。

    我们可以将xxxMapper.xml文件直接手动拖到对应的目录下,比如我将ItemMapper.xml拖到了classes中的与ItemMapper.class在一个目录,再次启动tomcat服务器就可以正常访问了。

     这是一个治标不治本的方法,我们要从根本上找问题的话就是,我们在resources中创建目录用的方式是不对的。

     

     正确的方式应该是这样的:

    要使用/ 来分割目录,使用点 . 来分割的话创建的目录就是一个名称为com.atyyc.ssm.dao的目录,所以mybatis访问的话,路径就错误了,这是一个创建包的小细节,圈起来。

  • 相关阅读:
    swift中的"类型擦除"
    Swift Pointer 使用指南
    Swift Method Dispatching — a summary of my talk at Swift Warsaw
    Swift库二进制接口(ABI)兼容性研究
    编译器最重要的工作就是确定对象内存模型
    Objective-C类成员变量深度剖析--oc对象内存模型
    Swift进阶之内存模型和方法调度
    Swift 对象内存模型探究(一)
    编程领域中的 "transparent" 和 "opaque"
    structure vs class in swift language
  • 原文地址:https://www.cnblogs.com/yycstart/p/13713277.html
Copyright © 2020-2023  润新知