Mybatis配置问题解决Invalid bound statement (not found)
首先这个异常的原因是系统根据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)的更多相关文章
- 解决Mybatis 报错Invalid bound statement (not found)
解决Mybatis 报错Invalid bound statement (not found) 出现此错误的原因 1.xml文件不存在 2.xml文件和mapper没有映射上 namespace指定映 ...
- [mybatis] mybatis错误:Invalid bound statement (not found)
点击菜单抛出异常: org.springframework.web.util.NestedServletException: Request processing failed; nested exc ...
- mybatis 异常处理:Invalid bound statement (not found)
mybatis 的使用过程中提示错误: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): ...
- 使用Mybatis时报错Invalid bound statement (not found):
使用逆向工程时生成的.xml文件在conf目录下,而使用查询方法时,无法在dao包下找到xml文件,所以报错. 测试代码如下所示: @Test public void testSimple() thr ...
- springboot+mybatis报错Invalid bound statement (not found)
今天做项目时报了一个错提示说Invalid bound statement (not found),也就是说mapper接口绑定.xml文件出错了,找不到指定的sql:原因是程序没有把.xml文件编译 ...
- MyBatis绑定错误[Invalid bound statement (not found)]
如果出现: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 一般的原因是Mapper i ...
- MyBatis 错误:Invalid bound statement (not found)
错误: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zr.msgg.per ...
- MyBatis笔记:invalid bound statement (not found)
maven项目在本地运行的时候没有问题,一旦把war包部署到测试机上就不能运行.查看了一下tomcat日志发现抛出这样的错误:invalid bound statement (not found),后 ...
- mybatis错误:Invalid bound statement (not found)
解决办法是去看看mybatis配置里面的可能因为配置为什么格式文件解析不到 <property name="mapperLocations" value="clas ...
随机推荐
- Java学习路线思维导图
- sql server 2016 附加 其它目录的数据库
如果数据库不在默认目录,那么需要将 mdf所在目录或者 mdf文件 添加 用户 [NT SERVICE\MSSQLSERVER]的创建权限,否则会提示没有权限, 具体详见: https://docs. ...
- python调用linux的命令
有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块 ...
- 【docker】将Java jar文件生成镜像、上传镜像并生成镜像压缩文件
概述 将Springboot的web服务打包成Jar包后,自动化脚本将jar打包成镜像.上传镜像.并生成镜像的压缩文件: Dockerfile FROM 10.254.9.21/library/ora ...
- Scrapy实战篇(四)爬取京东商城文胸信息
创建scrapy项目 scrapy startproject jingdong 填充 item.py文件 在这里定义想要存储的字段信息 import scrapy class JingdongItem ...
- ss客户端以及tcp,udp,dns代理ss-tproxy在线安装版--centos7.3 x64以上(7.3-7.6x64测试通过)
#!/bin/sh # # Script for automatic setup of an SS-TPROXY server on CentOS 7.3 Minimal. # export PATH ...
- C语言数据结构基础学习笔记——C语言基础
抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作,通常用(数据对象,数据关系,基本操作集)这样的三元组来表示抽象数据类型. 数据结构是相互之间存在一种或多种特定关系的数据元素的集合, ...
- MySQL——navicat 连接 mysql 出现1251Client does not support authentication protocol requested by server的解决方案
前期修改root密码问题(首次安装的root密码是空,直接Enter就行): cmd用管理员身份进入,然后输入 mysqladmin -u root -p password newpassword 需 ...
- TensorFlow模型加载与保存
我们经常遇到训练时间很长,使用起来就是Weight和Bias.那么如何将训练和测试分开操作呢? TF给出了模型的加载与保存操作,看了网上都是很简单的使用了一下,这里给出一个神经网络的小程序去测试. 本 ...
- 阿里云 配置ssl 在nginx上
写给自己的备忘录: 很乱 如果你也是 配置nginx ssl 可以给我留言 ,我是为了 捣鼓微信小程序后台 需要https 阿里云有免费一年的 ssl服务 链接 https://www.aliyun. ...