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 实现excel 导出功能
实现功能:java导出excel表 1.jsp代码 <form id="zhanwForm" action="<%=path%>/conferences ...
- centos7忘记密码处理办法
centos7忘记密码处理办法 此界面按e进入grub编辑界面 进入grub编辑界面.把linux16这行的ro修改为rw init=/sysroot/bin/sh. 按ctrl+x进入单用户模式 登 ...
- PLC 通讯
几个之前整理的高级语言与PLC通讯的资源下载链接:三菱:http://blog.sina.com.cn/s/blog_16d7d3ecb0102x6wj.html倍福:http://bbs.elecf ...
- 1.2.4 Excel快速建立n个文件夹
1.准备员工信息表,选中名字 2.[设置单元格格式]>[数字]>[自定义]>右侧的[类型]>输入”md ”@>单击[确定] 3.确定后在姓名前会出现md,新建文本文档,将 ...
- Lock的lockInterruptibly()方法
lockInterruptibly()方法能够中断等待获取锁的线程.当两个线程同时通过lock.lockInterruptibly()获取某个锁时,假若此时线程A获取到了锁,而线程B只有等待,那么对线 ...
- Github访问速度慢和下载慢的解决方法
原因 为什么访问速度慢.下载慢?github的CDN被某墙屏了,由于网络代理商的原因,所以访问下载很慢.Ping github.com 时,速度只有300多ms. 解决方法 绕过dns解析,在本地直接 ...
- springBoot 整合mybaits 逆向工程
pom.xml文件中增加配置项 <build> <plugins> <plugin> <groupId>org.springframework.boot ...
- Web App Checklist
Mobile Web App checklist 目标: 高性能Mobile Web App 一.UX和UI 操作节目与边框之间留空隙: 防止操作过程中,触发系统缺省行为,有些是无法disable的. ...
- 装饰器 -- 函数装饰器(tornado异常响应装饰器)
# 值可变,每次使用需要重新赋值 ERR_RESP_TEMPLATE = {"state": "FAILED", "error": None ...
- struts2 default.xml详解
struts2 default.xml 内容 1 bean节点制定Struts在运行的时候创建的对象类型. 2 指定Struts-default 包 用户写的package(struts.xml) ...