文档章节

MyBatis绑定错误:Invalid bound statement (not found)

留给明天
 留给明天
发布于 2016/04/04 13:01
字数 820
阅读 10845
收藏 4

今天搭建springMVC+spring+mybatis maven项目,总是出现

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误,调试了好久都没解决问题,新手的心酸也只有新手才能体会了。最后我去target目录下看了下,发现自己写的mapper.xml,原来maven项目的约定配置文件必须放resources里,src目录下的xml文件默认不会编译到target。由于我把mapper.xml放在了src目录里,才导致了错误的发生,该问题的实质是,idea对classpath的规定。在eclipse中,把资源文件放在src文件夹下,是可以找到的;但是在idea中,直接把资源文件放在src文件夹下,如果不进行设置,是不能被找到的。

 

     原来Maven 为我们提供了一致的项目目录配置(源文件夹、资源文件夹等),在自动构建项目时, Maven 会按照这个配置来执行操作(编译源文件、拷贝资源文件),Maven 默认的源文件夹及资源文件夹的配置代码如下:

<build>  
   <sourceDirectory>src/main/java</sourceDirectory >  
   <testSourceDirectory>src/test/java</testSourceDirectory >  
   <resources>  
       <resource>  
          <directory>src/main/resources</directory>  
       </resource>  
   </resources>  
   <testResources>  
       <testResource>  
          <directory>src/test/resources</directory>  
       </testResource>  
   </testResources>  
</build>

解决方案有2种:

1、可以把xml文件放到resource目录下,这样项目构建的时候会加载到target。

2、在pom.xml文件build添加resource资源列表。

<!--这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。-->
<resources>
    <resource>
        <!--   描述存放资源的目录,该路径相对POM路径-->
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
    </resource>
</resources>

 

总结

如果出现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文件中加一个空格或者空行然后保存

除此之外,我遇到的还有一些特殊情况,耽误了我不少时间,网上有其他原因也导致bound找不到:

1、Intellij Idea 的包名和目录名生成机制,新建一个包a.b.c.d,目录结构不是a->b->c->d,而是生成"a.b.c.d"的目录,进而导致mybatis映射错误,此错误很难排查。

2、xml文件定义如下:

<select id="countMembers" parameterMap="java.util.Map" resultType="java.lang.Integer">

parameterMap用错,应该为parameterType,此错误会导致mybatis所有的mapper都报绑定错误,很坑。

感觉mybatis的异常机制做的不是太好,给排错造成很大困难,仅此记录。

 

© 著作权归作者所有

留给明天
粉丝 0
博文 40
码字总数 18582
作品 0
深圳
私信 提问
加载中

评论(4)

陆秋之
这个idea和eclipse的区别是真的坑。还好看到了你的文章,没有浪费太多时间哈哈。谢谢。
留给明天
留给明天 博主

引用来自“itxx2016”的评论

推荐国内最流行的ibatis、mybatis代码生成网站 --- fwjava.com
无需任何安装配置,直接在线生成,且十分规范好用.
现在,很多知名的互联网公司都在用它.
仔细看了下,挺不错的,有空好好研究下,一直没用代码生成,全是手写的。
留给明天
留给明天 博主

引用来自“itxx2016”的评论

推荐国内最流行的ibatis、mybatis代码生成网站 --- fwjava.com
无需任何安装配置,直接在线生成,且十分规范好用.
现在,很多知名的互联网公司都在用它.
谢谢推荐
i
itxx2016
推荐国内最流行的ibatis、mybatis代码生成网站 --- fwjava.com
无需任何安装配置,直接在线生成,且十分规范好用.
现在,很多知名的互联网公司都在用它.
Mybatis异常_03_Invalid bound statement (not found)

一、异常信息 Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.hand.hec.nghec.sys.mapper.SysServiceMapper.selectService 二、异常原因......

rayner
2018/01/11
0
0
Mybatis+Thymeleaf开发遇到的几个问题笔录

我的开发工具是IntelliJ IDEA,然后在SpringBoot集成Mybatis,前端用模块引擎Thymeleaf的过程中遇到几个问题,不过也花了点时间,现在记录下来,作为笔记记录。 Invalid bound statement异常...

smileNicky
2018/11/03
0
0
关于springBoot整合mybatis打war包发布

springboot多moudule项目打成war包发布, 本地tomcat8对改war包进行测试,没有异常,当发布的云服务器centos7上报错.具体报错信息 错误信息org.apache.ibatis.binding.BindingException: Inval...

超级无敌智障
01/21
0
0
SpringMVC整合MyBatis测试,一直出错。。。调了好几天了!!!

这是整体的结构: 这是User类: 这是UserDao: 这是UserMapper.xml 其实上面三个都是自动生成的。 这是UserService类: 这是UserServiceImpl类: 这是UserController中代码: 这个是数据库和表...

沙拉曼德
2015/11/18
1K
4
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; neste......

wangbiglei
2015/08/08
0
1

没有更多内容

加载失败,请刷新页面

加载更多

构造函数

1:基本概念 提起构造函数,我们需要从JS的创建对象开始,JS的创建对象有两种方式,一种是对象字面量法(把一个对象的属性和方法一一罗列出来),对象字面量法有一个明显的不足在于它不适合批...

凌兮洛
14分钟前
0
0
防抖

export default function debounce(fn, wait) { var timeout; return function() { var ctx = this, args = arguments; clearTimeout(timeout); timeout = setTimeout(funct......

Js_Mei
14分钟前
0
0
RSS 阅读器及源

参考资料 1. RSS 阅读器及源 2. 我有特别的 RSS 使用技巧 3. 万物皆可 RSS 文档 RSS源 1. go2think 2. cnblogs 3. justdojava 4. diyijc...

近在咫尺远在天涯
19分钟前
2
0
一文了解金融行业服务治理

转载本文需注明出处:微信公众号EAWorld,违者必究。 引言: 微服务等新技术在解决系统敏捷性的同时,也带来了新的问题,众多的服务被识别出来后需要有效的管理起来,内部系统与外部系统通过...

EAWorld
23分钟前
0
0
Retrofit2应对各种奇葩接口的方法

最近这一年半,实在是大开眼界了,面对各种奇葩的接口,在紧凑的开发周期下,没有时间细想如何去面对,好在最近稍微清闲了,就把遇到的各种奇葩接口整理了一下,自己手写Spring去模拟这些接口...

猴亮屏
33分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部