org.apache.ibatis.binding.BindingException【原因汇总】

背景:Spring整合Mybatis

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

解释:就是说,你的Mapper接口,被Spring注入后,却无法正常的使用mapper.xml的sql;

这里的Spring注入后的意思是,你的接口已经成功的被扫描到,但是当Spring尝试注入一个代理(MyBatista实现)的实现类后,却无法正常使用。这里的可能发生的情况有如下几种;

  1. 接口已经被扫描到,但是代理对象没有找到,即使尝试注入,也是注入一个错误的对象(可能就是null)
  2. 接口已经被扫描到,代理对象找到了,也注入到接口上了,但是调用某个具体方法时,却无法使用(可能别的方法是正常的)

当然,我们不好说是那种情况,毕竟报错的结果是一样的,这里就提供几种排查方法:

  1. mapper接口和mapper.xml是否在同一个包(package)下?名字是否一样(仅后缀不同)?

    [plain] view plain copy

    1. 比如,接口名是NameMapper.java;对应的xml就应该是NameMapper.xml
  2. mapper.xml的命名空间(namespace)是否跟mapper接口的包名一致?

    [plain] view plain copy

    1. 比如,你接口的包名是com.abc.dao,接口名是NameMapper.java,那么你的mapper.xml的namespace应该是com.abc.dao.NameMapper
  3. 接口的方法名,与xml中的一条sql标签的id一致

    [html] view plain copy

    1. 比如,接口的方法List<User> findAll();那么,对应的xml里面一定有一条是<select id="findAll" resultMap="**">****</select>
  4. 如果接口中的返回值List集合(不知道其他集合也是),那么xml里面的配置,尽量用resultMap(保证resultMap配置正确),不要用resultType
  5. 最后,如果你的项目是maven项目,请你在编译后,到接口所在目录看一看,很有可能是没有生产对应的xml文件,因为maven默认是不编译的,因此,你需要在你的pom.xml的<build></build>里面,加这么一段:

    [html] view plain copy

    1. <resources>
    2. <resource>
    3. <directory>src/main/java</directory>
    4. <includes>
    5. <include>**/*.xml</include>
    6. </includes>
    7. <filtering>true</filtering>
    8. </resource>
    9. </resources>

我就是坑在了第5点上,折腾了四个多小时,大家及时发现。

时间: 2024-11-07 00:51:11

org.apache.ibatis.binding.BindingException【原因汇总】的相关文章

org.apache.ibatis.binding.BindingException导致的原因

问题:框架:maven springMVC 整合mybatis 导致dao调用异常 经过了半天时间,一直困惑我的是明明dao层已经注入成功,但是dao层并没有调用mapper里面的方法,知道我把错误打印出来才知道是 org.apache.ibatis.binding.BindingException 百度查了很多,检查项目mapper里面的sql语句是否正确,检查annotation是否正确,注入是否正常, 现把spring注入一个代理,无法调用sql的情况归纳一下,主要排查几个方面: 1.da

Exception:HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

主要错误信息如下: HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) description The server encountered an internal error that prevented it from fulfilling this request. exception java.lang.RuntimeException: org

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

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): da.huying.usermanage.mapper.UserMapper.queryUserById    at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:196)    at org.apache.ibatis.bindi

org.apache.ibatis.binding.BindingException

环境:spring3.1.1+mybatis3.2.8+mybatis-spring1.2.3 SpringMVC + MyBatis整合,出现下面的错误: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (no

IDEA异常解决: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

有时候解决问题不仅仅是解决问题.-----jstarseven 最近因为开发需要,需要搭建一个ssm开发框架,采用了开发工具IDEA. 整合完了SSM开发框架之后,发布的时候出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found... 一开始以为是自己配置文件写的有问题找了半天也没有问题,之后才发现是自己对IDEA工具使用的不够熟悉. 先说该异常常见解决方案: 一般是xml映射文件有错误.但

Spring Boot:Caused by: org.apache.ibatis.binding.BindingException: Parameter &#39;deptId&#39; not found.

1. 错误信息描述 在使用Spring Boot + Mybaits从前台向后台提交数据时,控制台报出该错误信息 2. 报错原因 在dao接口中,该方法拥有两个参数,Mybaits无法区分这两个参数 3. 解决方法 在dao方法中为这两个参数分别标注Mybaits的@Param注解,对这两个参数加以区分 List<ManagerSelectResult>selectToday(@Param("deptId") Integer deptId, @Param("off

报错org.apache.ibatis.binding.BindingException: Type interface com.atguigu.mybatis.bean.dao.EmployeeMapper is not known to the MapperRegistry.

我报这个错误的原因是因为mybatis-config.xml配置文件中 <!-- 批量注册: --> <package name="com.atguigu.mybatis.dao"/> 没有写对,根据路径改正就可以了.比如说应该写成 <package name="com.atguigu.mybatis.dao"/> 结果我写成了 <package name="com.atguigu.mybatis.bean.dao

转:IDEA异常解决: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

原文地址:https://www.cnblogs.com/jstarseven/p/5803697.html 有时候解决问题不仅仅是解决问题.-----jstarseven 最近采用了开发工具IDEA开发SSM开发框架完成后,发布的时候出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found... 一开始以为是自己配置文件写的有问题找了半天也没有问题,之后才发现是自己对IDEA工具使用的不够熟

org.apache.ibatis.binding.BindingException: Parameter &#39;idList&#39; not found解决办法

https://blog.csdn.net/qq_28379809/article/details/83342196 问题描述 使用Mybatis查询数据库报错: org.apache.ibatis.binding.BindingException: Parameter 'idList' not found 1 接口是这样的: public List<User> findByIdList(List<Integer> idList); 1 XML是这样的: <select id