一、问题描述

使用mybatis的项目在本地可以正常运行,但当使用maven或Jenkins打包部署到服务器上时出现了绑定错误,异常信息为:

org.apache.ibatis.binding.BindingException: Invalid bound statement
(not found): com.yo.news.user.mapper.UserMapper.getUserByTelPwd

二、问题分析和解决方法

首先,给定的异常提示信息并不精准,有多个错误原因都会抛出该异常。mybatis出现这个问题,通常是由Mapper interface和对应的xml文件的定义对应不上引起的,这时就需要仔细检查对比包名、xml中的namespace、接口中的方法名称等是否对应。我之前就因为称忘记在xml标签的id属性中添加方法名或写错方法名而出现这个错误。

出现这个错误时,按以下步骤检查一般就会解决问题:

1:检查xml文件所在package名称是否和Mapper interface所在的包名一一对应;
2:检查xml的namespace是否和xml文件的package名称一一对应;
3:检查方法名称是否对应;
4:去除xml文件中的中文注释;
5:随意在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资源列表。
 <build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.xml</include><include>**/*.properties</include></includes><filtering>true</filtering></resource><resource><!--   描述存放资源的目录,该路径相对POM路径--><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>

总结:

如果出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误,一般的原因是Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上,需要比较细致的对比,按以下步骤一一执行. 或者是idea开发maven项目,maven不能识别src/main/java中的配置文件

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都报绑定错误,很坑。

转自博客园:https://www.cnblogs.com/itzyz/p/10954427.html

解决Mybatis启动报错: Invalid bound statement (not found)相关推荐

  1. 百分百解决 mbatis/mp报错 Invalid bound statement (not found)

    背景:我用的mp ,使用baseMapper调用封装好的方法都可以使用,所有类型的wrapper都正常使用,但是自己写方法执行复杂的sql就出现错误! 报错信息如下: org.apache.ibati ...

  2. 解决动态SQL报错Invalid bound statement (not found): ……

    做一个springboot+vue2的项目,用到动态SQL,在postman测试接口的时候,报错500 回到IDEA查看报错信息Invalid bound statement (not found): ...

  3. mybatis报错 Invalid bound statement (not found)

    mybatis报错 Invalid bound statement (not found) 第一步:查看接口mapper和对应的xml文件的id是否一致 第二步:是由于maven默认加载机制造成 ma ...

  4. Mybatis报错: Invalid bound statement (not found)...

    报错内容如下 Rerun updateInfoByUid() cn.cyjt.shoot.mapper.UserMapperTests updateInfoByUid(cn.cyjt.shoot.ma ...

  5. 【转载】MyBatis报错Invalid bound statement (not found)

    转载自: koal的博客 http://www.cnblogs.com/koal/p/5232388.html <!--IDEA需要添加一下内容,否则无法找到mapper --><b ...

  6. 单数据源:spring boot+mybatisplus启动后访问接口报错Invalid bound statement (not found)

    经检查发现,需要在启动类上加注解 @MapperScan(basePackages = "com.ruifeng.tjtaxiwebqy.mapper") 即: 结果还是报错,然后 ...

  7. springboot报错Invalid bound statement (not found) 的解决办法

    1.经排查所有的配置都没有问题,最后发现是项目编译后target文件夹中没有加载映射文件,解决方案,在pom中加入以下配置(但是这种方案一般要求在创建项目时就在pom中加入): <build&g ...

  8. [Mybatis-Plus] 调用自带方法 报错 Invalid bound statement

    需要加这两个,否则mybatisplus 无法识别 @TableName("T_admin_cz")//数据库表名称 public class admin {@TableId(&q ...

  9. mybatis 绑定失败:Invalid bound statement (not found): com.demo.service.api.dao.SysUserMapper.insert

    mybatis 绑定失败:Invalid bound statement (not found): com.demo.service.api.dao.SysUserMapper.insert 标题 错 ...

最新文章

  1. fcm算法的MATLAB实现,FCM算法的matlab程序(初步)
  2. C++Builder 2010深入TApplication类之事件
  3. Android之用户定位(二)
  4. android studio无线真机调试
  5. resetroot_169route_python2(用于ubuntu12.04和14.04,centos系列)
  6. 删除临时表并且插入数据
  7. 乐高ev3搭建图_乐高EV3第一讲,Hello Ev3,搭建机甲战神模型
  8. inchat库下载 python_Linux 环境下安装 Python3 的操作方法
  9. adroid 中公里除时间_全长210.72公里!这条高速有望年底通车…(视频图文)
  10. 谷歌Chrome浏览器无法打开网页,提示您与此网站之间建立不安全连接【解决】
  11. 基于DS-lite的IP城域网向IPv6演进过渡方案研究
  12. ps边框制作教程: ps做框子
  13. matlab 隐函数求偏导数,隐函数求偏导数的方法.PDF
  14. 【区块链开发】区块链技术的电商平台开发
  15. 猜数字游戏:随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏
  16. django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作
  17. Turing Tape (推公式 模拟)
  18. 编写函数,实现对身份证号码最后一位的验证
  19. 秋招算法岗,面试复盘
  20. 强烈推荐一位改变我命运的程序员大佬!当作礼物送给你!

热门文章

  1. Python编程基础:第三十三节 文件复制Copy a File
  2. GPU高效通信算法-Ring Allreduce
  3. elasticSearch6源码分析(2)模块化管理
  4. 大战C100K之-Linux内核调优篇--转载
  5. spring beans源码解读之--bean definiton解析器
  6. 基于事件的 NIO 多线程服务器--转载
  7. 白领职场必懂的22条潜规则(转载)
  8. 跟我学大数据分析之四:“钱”去哪儿了?
  9. 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
  10. Learning to Rank 中Listwise关于ListNet算法讲授及实现