首先这个异常的原因是系统根据Mapper类的方法名找不到对应的映射文件。

网上也搜索了到了类似的文章,一般可以从以下几个点排查:

  • mapper.xml的namespace要写所映射接口的全称类名,而且要和Mapper类对应好!
  • mapper.xml中的每个statement的id要和接口方法的方法名相同
  • mapper.xml中定义的每个sql的parameterType要和接口方法的形参类型相同
  • mapper.xml中定义的每个sql的resultType要和接口方法的返回值的类型相同
  • mapper.xml要和对应的mapper接口在同一个包下
  • mapper.xml的命名规范遵守: 接口名+Mapper.xml

原文链接:https://www.cnblogs.com/ewwwe/p/6181872.html

悲催的是笔者的项目把以上都排查过了还是不行。于是再去检查配置文件。

这里要特别说明的一下是,我们的项目要连接2个数据源。1个数据源只是查询,另1个数据库要进行更新。

经过检查,原来是2个Mybatis的扫描包路径存在了包含关系导致的!

  1. <property name="basePackage" value="com.kedacom.scm.dao.mes.mybatis" />

然后我把1个数据源的mapper类从原来的路径底下剥离开来,问题终于解决!!!

顺便放一下2个数据源的完整配置,以供参考。数据源一的Mybatis配置。

  1. <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean" lazy-init="true">
  2. <property name="dataSource" ref="dataSource" />
  3. <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
  4. <property name="typeAliasesPackage" value="com.kedacom.scm.model" />
  5. <!-- 显式指定Mapper文件位置 -->
  6. <property name="mapperLocations">
  7. <list>
  8. <value>classpath:/mapper/*.map.xml</value>
  9. <value>classpath*:/security/map/*.map.xml</value>
  10. </list>
  11. </property>
  12. <property name="configLocation" value="classpath:/conf/mybatis-configuration.xml" />
  13. <property name="plugins">
  14. <array>
  15. <bean class="com.kedacom.mybatis.ext.PageHelper">
  16. <property name="properties">
  17. <value>
  18. dialect=${jdbc.dbType}
  19. offsetAsPageNum=true
  20. rowBoundsWithCount=true
  21. pageSizeZero=true
  22. reasonable=true
  23. firstPageIsZero=true
  24. sortNamingStrategy=default
  25. </value>
  26. </property>
  27. </bean>
  28. </array>
  29. </property>
  30. </bean>
  31.  
  32. <!-- 扫描basePackage下所有以@MyBatisRepository标识的 接口-->
  33. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  34. <!-- 如果有多个数据源,这边的扫描包路径不能重合-->
  35. <property name="basePackage" value="com.kedacom.security.dao,com.kedacom.scm.dao.mybatis" />
  36. <property name="annotationClass" value="com.kedacom.core.annotion.MyBatisRepository"/>
  37. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean" />
  38. </bean>

另一个数据源配置:

  1. <bean id="sqlSessionFactoryBean4Mes" class="org.mybatis.spring.SqlSessionFactoryBean" lazy-init="true">
  2. <property name="dataSource" ref="dataSourceMes" />
  3. <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
  4. <property name="typeAliasesPackage" value="com.kedacom.scm.model" />
  5. <!-- 显式指定Mapper文件位置 -->
  6. <property name="mapperLocations">
  7. <list>
  8. <value>classpath*:/mapper/mes/*.map.xml</value>
  9. </list>
  10. </property>
  11. <property name="configLocation" value="classpath:/conf/mybatis-configuration.xml" />
  12. <property name="plugins">
  13. <array>
  14. <bean class="com.kedacom.mybatis.ext.PageHelper">
  15. <property name="properties">
  16. <value>
  17. dialect=${jdbc.dbType}
  18. offsetAsPageNum=true
  19. rowBoundsWithCount=true
  20. pageSizeZero=true
  21. reasonable=true
  22. firstPageIsZero=true
  23. sortNamingStrategy=default
  24. </value>
  25. </property>
  26. </bean>
  27. </array>
  28. </property>
  29. </bean>
  30.  
  31. <!-- 扫描basePackage下所有以@MyBatisRepository标识的 接口-->
  32. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  33. <!-- 如果有多个数据源,这边的扫描包路径不能重合-->
  34. <property name="basePackage" value="com.kedacom.scm.dao.mes.mybatis" />
  35. <property name="annotationClass" value="com.kedacom.core.annotion.MyBatisRepository"/>
  36. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean4Mes" />
  37. </bean>

由于一个数据库只是查询,所以这边并没有配置事务。

Mybatis配置问题解决Invalid bound statement (not found)的更多相关文章

  1. 解决Mybatis 报错Invalid bound statement (not found)

    解决Mybatis 报错Invalid bound statement (not found) 出现此错误的原因 1.xml文件不存在 2.xml文件和mapper没有映射上 namespace指定映 ...

  2. [mybatis] mybatis错误:Invalid bound statement (not found)

    点击菜单抛出异常: org.springframework.web.util.NestedServletException: Request processing failed; nested exc ...

  3. mybatis 异常处理:Invalid bound statement (not found)

    mybatis 的使用过程中提示错误: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): ...

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

    使用逆向工程时生成的.xml文件在conf目录下,而使用查询方法时,无法在dao包下找到xml文件,所以报错. 测试代码如下所示: @Test public void testSimple() thr ...

  5. springboot+mybatis报错Invalid bound statement (not found)

    今天做项目时报了一个错提示说Invalid bound statement (not found),也就是说mapper接口绑定.xml文件出错了,找不到指定的sql:原因是程序没有把.xml文件编译 ...

  6. MyBatis绑定错误[Invalid bound statement (not found)]

    如果出现: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 一般的原因是Mapper i ...

  7. MyBatis 错误:Invalid bound statement (not found)

    错误: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zr.msgg.per ...

  8. MyBatis笔记:invalid bound statement (not found)

    maven项目在本地运行的时候没有问题,一旦把war包部署到测试机上就不能运行.查看了一下tomcat日志发现抛出这样的错误:invalid bound statement (not found),后 ...

  9. mybatis错误:Invalid bound statement (not found)

    解决办法是去看看mybatis配置里面的可能因为配置为什么格式文件解析不到 <property name="mapperLocations" value="clas ...

随机推荐

  1. java 实现excel 导出功能

    实现功能:java导出excel表 1.jsp代码 <form id="zhanwForm" action="<%=path%>/conferences ...

  2. centos7忘记密码处理办法

    centos7忘记密码处理办法 此界面按e进入grub编辑界面 进入grub编辑界面.把linux16这行的ro修改为rw init=/sysroot/bin/sh. 按ctrl+x进入单用户模式 登 ...

  3. PLC 通讯

    几个之前整理的高级语言与PLC通讯的资源下载链接:三菱:http://blog.sina.com.cn/s/blog_16d7d3ecb0102x6wj.html倍福:http://bbs.elecf ...

  4. 1.2.4 Excel快速建立n个文件夹

    1.准备员工信息表,选中名字 2.[设置单元格格式]>[数字]>[自定义]>右侧的[类型]>输入”md ”@>单击[确定] 3.确定后在姓名前会出现md,新建文本文档,将 ...

  5. Lock的lockInterruptibly()方法

    lockInterruptibly()方法能够中断等待获取锁的线程.当两个线程同时通过lock.lockInterruptibly()获取某个锁时,假若此时线程A获取到了锁,而线程B只有等待,那么对线 ...

  6. Github访问速度慢和下载慢的解决方法

    原因 为什么访问速度慢.下载慢?github的CDN被某墙屏了,由于网络代理商的原因,所以访问下载很慢.Ping github.com 时,速度只有300多ms. 解决方法 绕过dns解析,在本地直接 ...

  7. springBoot 整合mybaits 逆向工程

    pom.xml文件中增加配置项 <build> <plugins> <plugin> <groupId>org.springframework.boot ...

  8. Web App Checklist

    Mobile Web App checklist 目标: 高性能Mobile Web App 一.UX和UI 操作节目与边框之间留空隙: 防止操作过程中,触发系统缺省行为,有些是无法disable的. ...

  9. 装饰器 -- 函数装饰器(tornado异常响应装饰器)

    # 值可变,每次使用需要重新赋值 ERR_RESP_TEMPLATE = {"state": "FAILED", "error": None ...

  10. struts2 default.xml详解

    struts2  default.xml 内容 1 bean节点制定Struts在运行的时候创建的对象类型. 2 指定Struts-default 包  用户写的package(struts.xml) ...