首先这个异常的原因是系统根据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的扫描包路径存在了包含关系导致的!

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

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

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

    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean" lazy-init="true">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
<property name="typeAliasesPackage" value="com.kedacom.scm.model" />
<!-- 显式指定Mapper文件位置 -->
<property name="mapperLocations">
<list>
<value>classpath:/mapper/*.map.xml</value>
<value>classpath*:/security/map/*.map.xml</value>
</list>
</property>
<property name="configLocation" value="classpath:/conf/mybatis-configuration.xml" />
<property name="plugins">
<array>
<bean class="com.kedacom.mybatis.ext.PageHelper">
<property name="properties">
<value>
dialect=${jdbc.dbType}
offsetAsPageNum=true
rowBoundsWithCount=true
pageSizeZero=true
reasonable=true
firstPageIsZero=true
sortNamingStrategy=default
</value>
</property>
</bean>
</array>
</property>
</bean> <!-- 扫描basePackage下所有以@MyBatisRepository标识的 接口-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 如果有多个数据源,这边的扫描包路径不能重合-->
<property name="basePackage" value="com.kedacom.security.dao,com.kedacom.scm.dao.mybatis" />
<property name="annotationClass" value="com.kedacom.core.annotion.MyBatisRepository"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean" />
</bean>

另一个数据源配置:

     <bean id="sqlSessionFactoryBean4Mes" class="org.mybatis.spring.SqlSessionFactoryBean" lazy-init="true">
<property name="dataSource" ref="dataSourceMes" />
<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
<property name="typeAliasesPackage" value="com.kedacom.scm.model" />
<!-- 显式指定Mapper文件位置 -->
<property name="mapperLocations">
<list>
<value>classpath*:/mapper/mes/*.map.xml</value>
</list>
</property>
<property name="configLocation" value="classpath:/conf/mybatis-configuration.xml" />
<property name="plugins">
<array>
<bean class="com.kedacom.mybatis.ext.PageHelper">
<property name="properties">
<value>
dialect=${jdbc.dbType}
offsetAsPageNum=true
rowBoundsWithCount=true
pageSizeZero=true
reasonable=true
firstPageIsZero=true
sortNamingStrategy=default
</value>
</property>
</bean>
</array>
</property>
</bean> <!-- 扫描basePackage下所有以@MyBatisRepository标识的 接口-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 如果有多个数据源,这边的扫描包路径不能重合-->
<property name="basePackage" value="com.kedacom.scm.dao.mes.mybatis" />
<property name="annotationClass" value="com.kedacom.core.annotion.MyBatisRepository"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean4Mes" />
</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. 查看进程在CPU和内存占用的命令

    1.使用top命令 输入M表示按内存排序,也就是RES这一列从大到小排序了 它占用了3.3%的内存,用134568除以4030416结果就是3.3左右 也就是说 总物理内存是3.84GB RES这一列 ...

  2. 【java】设计模式-单例设计模式

    单例设计模式:解决一个类在内存中是存在一个对象的问题.当需要该事物的对象在内存中唯一时,将以下三步添加即可. 思想:想要保证对象唯一1.为了避免其他程序过多的建立该类对象,先禁止其他程序建立该类对象2 ...

  3. Delphi2009之TImage

    TPngImage原来是SourceFroge上的一个开源项目,现在突然消失了,为什么呢?Nick 在他的博客上写到:TPNGImage被CodeGear/Embarcadero收购了,现在直接就是D ...

  4. 【python】如何将ipdb的python解释器路径切换至虚拟环境中

    背景: 利用virtualenv构建一个python3.5的虚拟环境,在该虚拟环境中使用ipdb调试程序,结果报错找不到某一个模块. 程序的所有依赖模块都已经成功安装在虚拟环境中. 在虚拟环境中,te ...

  5. ThinkPHP5.*版本发布安全更新

    2018 年 12 月 9 日 发布 本次版本更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版 ...

  6. Alsa aplay S8 U8 S16_LE S16_BE U16_LE U16_BE格式

    举个例子 aplay -r 16000 -f S16_LE -D hw:0,0 -c 2 -d 3 ~/Private/Private_Tools/02_ALSA_Learning/left_1k_r ...

  7. POJ1003 – Hangover (基础)

    Hangover   Description How far can you make a stack of cards overhang a table? If you have one card, ...

  8. vue展示dicom文件,医疗系统。

    环境:vue.webpack.constone 资料来源及文件:https://github.com/GleasonBian/CornerstoneVueWADO 需要下载的模块:cornerston ...

  9. 微信小程序 实现三级联动-省市区

    github项目地址   https://github.com/z1511676208/chooseAddr 序:项目中需要用到三级联动,自己试着写了下,也查了一些资料,现在把这个记录一下,里面地区数 ...

  10. Linux配置Supervisor 配置遇到的坑

    在linux中web 应用部署到线上后之后发现退出终端后网站就无法访问了 所以需要用Supervisor来守护进程,它可以保证应用一直处于运行状态,在遇到程序异常.报错等情况,导致 web 应用终止时 ...