文档章节

再说mybatis3:Invalid bound statement (not found)

彭苏云
 彭苏云
发布于 2015/06/09 23:34
字数 714
阅读 37832
收藏 3

新手使用mybatis3的心酸,应该也只有新手才能体会了,网上一堆解决异常的办法都不起作用,心态不好的话,砸电脑都有可能了,还好,我的心态还可以,承认是自己的学识不够,只能怒而学习之,呵呵,扯得有点多。

最近熟练springmvc+mybatis3的开发框架,在搭建开发环境的时候遇到了如标题这样的问题,代码分层上还是普通的Controller、Service、Service Impl、Mapper层,然后使用注解的方式注入bean,注解用的是JSR-330的规范,类似@Inject、@Named之类的东西。

介绍截到这里了,先看报错:

INFO: JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.join.stump.site.service.MenuService.queryMenuList
	at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:189)
	at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:43)
	at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:58)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:51)
	at com.sun.proxy.$Proxy12.queryMenuList(Unknown Source)
	at com.join.stump.site.service.impl.MenuServiceImpl.main(MenuServiceImpl.java:25)

调用方法:

public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "stump-core-config.xml" });
		MenuService menuService = (MenuService) context
				.getBean("menuService");
		System.err.println("menuService:"+menuService.queryMenuList(null));
	}

 显然在调用service的方法的时候报错了,有两个地方可能会让你纳闷,

1、为什么报Invalid bound statement (not found): com.join.stump.site.service.MenuService.queryMenuList

2、为什么service的对象类型是org.apache.ibatis.binding.MapperProxy

关于第一个问题,由第二个问题可以得到解释,因为是org.apache.ibatis.binding.MapperProxy 在使用com.join.stump.site.service.MenuService.queryMenuList在mybatis的sql映射文件中没有这个sql,所以报错。

那为什么会有第二个问题了,我也百事不得骑姐(故意的),在经过一方折腾后,看到mybatis-spring的官网上一段话,感觉豁然开朗,试着调整了下就没问题了。这个问题跟我的mybatis的配置文件有很大关系。先看出错前的配置:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.join.stump" />
	</bean>

再看解决后的配置:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.join.stump.site.mapper,com.join.stump.base.mapper" />
	</bean>


注意到区别了吗?然后我给出官网的一段说明:
MapperScannerConfigurer 支 持 过 滤 由 指 定 的 创 建 接 口 或 注 解 创 建 映 射 器 。 annotationClass 属性指定了要寻找的注解名称。 markerInterface 属性指定了要寻找的父 接口。如果两者都被指定了,加入到接口中的映射器会匹配两种标准。 默认情况下,这两个 属性都是 null,所以在基包中给定的所有接口可以作为映射器加载
好吧,应该能够想到点什么了吧,好吧,我直说了,出错的配置中basePackage用的是com.join.stump,这样MapperScannerConfigurer做扫描的时候,把Service也扫进去了,所以,现在可以骑姐了。


© 著作权归作者所有

彭苏云
粉丝 42
博文 204
码字总数 54255
作品 0
广州
高级程序员
私信 提问
加载中

评论(3)

snfdf
snfdf
特地登录感谢,这两天项目改用dubbo框架,原来好用的mapper怎么都不能用了,baidu了好多显然跟我的情况不一样,看到贵文后豁然开朗,问题终于解决了。不过又出现了新的问题,有点尴尬。
彭苏云
彭苏云 博主

引用来自“jackyrong”的评论

hi,能否帮忙看下我的问题,http://www.oschina.net/question/232796_241460
好的。
j
jackyrong
hi,能否帮忙看下我的问题,http://www.oschina.net/question/232796_241460
mybatis3:Invalid bound statement (not found)

最近在学习mytatis3和springMVC,构建工具用的是maven,在调用mybatis提供的Mapper接口的时候,一直报错: org.apache.ibatis.binding.BindingException: Invalid bound statement (not fou...

彭苏云
2015/06/08
0
0
org.springframework.web.util.NestedServletException:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not foun......

白又白呀
2018/01/26
109
2
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

报错信息如下 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ld.rest.mapper.AdministrativePenaltyMapper.selectAdministrativePenaltyList 这个......

为了美好的明天
2017/11/01
0
0
SpringMVC整合MyBatis测试,一直出错。。。调了好几天了!!!

这是整体的结构: 这是User类: 这是UserDao: 这是UserMapper.xml 其实上面三个都是自动生成的。 这是UserService类: 这是UserServiceImpl类: 这是UserController中代码: 这个是数据库和表...

沙拉曼德
2015/11/18
1K
4
Mybatis+Thymeleaf开发遇到的几个问题笔录

我的开发工具是IntelliJ IDEA,然后在SpringBoot集成Mybatis,前端用模块引擎Thymeleaf的过程中遇到几个问题,不过也花了点时间,现在记录下来,作为笔记记录。 Invalid bound statement异常...

smileNicky
2018/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

solr实例

需求:使用Solr实现电商网站中商品信息搜索功能,可以根据关键字、分类、价格搜索商品信息,也可以根据价格进行排序,并且实现分页功能。 一.架构设计:1.solr服务器 2.自己开发的应用(2.1...

klmkom
30分钟前
0
0
在知乎上看到一个关于Python资源的很不错的主题,可惜点赞不过400多

看上去,混知乎的技术相关的人还是少。 哪些 Python 库让你相见恨晚? Lingfeng Ai,伯乐在线技术翻译组,欢迎喜欢互联网和英… bulan1989、五德 等人赞同 Awesome Python中文版来啦! 本文由...

dillonxiao
36分钟前
1
0
Django编写数据模型类

设计数据库和表结构是做网站的基础。在Django中,不需要通过SQL语句直接跟数据库打交道,而是完全用Python的类来创建数据模型,之后交给Django完成创建数据库的操作。 数据模型类 数据模型类...

ZeroBit
39分钟前
1
0
关于TensorFlow 2.0,这里有你想知道的一切

全文共8094字,预计学习时长30分钟或更长 图片来源:pexels.com/@pixabay TensorFlow是谷歌2015年开源的通用高性能计算库。最初主要是为构建神经网络(NNs)提供高性能的API。然而,随着时间的...

读芯术
43分钟前
5
0
Wondershare Recoverit - 专业数据恢复神器,支持U盘、存储卡等外部设备!

Wondershare Recoverit 今天带来的这款软件叫做Wondershare Recoverit,是一款专业实用的数据恢复软件,也是一款比较久的数据恢复软件了,可以恢复所有文件类型。 包括照片、视频、文档和其他...

_Somuns
56分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部