spring mybatis整合的一个无法绑定的问题!!!急!!!

大乘期 发布于 2016/01/10 15:09
阅读 1K+
收藏 1
最近进了一个新公司,之前一直都是SSH,现在是springmvc+mybatis,所以特意在网上找了一些资料来做了一个小列子,发现总是报:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ssm.test.dao.UserInfoDao.insert
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.$Proxy17.insert(Unknown Source)
at com.ssm.test.service.UserServiceImpl.insert(UserServiceImpl.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy20.insert(Unknown Source)
at test.Test.testInsert(Test.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:73)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:73)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:217)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:83)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:68)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:163)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
我没有明白,也在网上搜索了一些资料,发现真的无计可施了...求大神帮忙...


这里是这样配置的,下面是实体类的配置文件


我知道mybatis和spring结合有一个自动注入实现类的机制,但是我这里的配置都是对的,我没有想明白到底为什么,网上说一般都是包名字错误,但是我检查了几天了,这些配置不可能出错的,我还是不明白到底为什么...

我是参考这个网页上搭建的:http://doc.okbase.net/fengshizty/archive/126397.html

请大神帮帮我,我真不明白哪里错了...我要崩溃了...

我在开源中国也看到类似的问题,但是没有回答...http://www.oschina.net/question/113302_228910?fromerr=lmAII0nJ

加载中
0
Elven_Xu
Elven_Xu
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ssm.test.dao.UserInfoDao.insert找不到
大乘期
大乘期
我回复你了,在下面的回复...我上传了截图,你帮我看看
大乘期
大乘期
回复 @Even_Xu : 我那个项目在家里,今天给贴上来,不好意思,你们可以帮我看看,我保证什么都是对的...
Elven_Xu
Elven_Xu
回复 @yinfeng88 : 直接复制很容易出问题的,我之前也遇到过,后来自己敲,慢点,但是可以找到问题所在
大乘期
大乘期
回复 @Even_Xu : 下面我给出的列子是一模一样的...我只是把实体类的xml放到实体类中的那个包去了,而且我也做了相应路径修改..
Elven_Xu
Elven_Xu
回复 @yinfeng88 : 你把mybatis和springmvc配置文件还有目录结构上传
下一页
0
开源中国一人游
开源中国一人游
我也用过这个帖子搭建过项目,我的成功了,不过这个项目里面的架包版本有点低,会出问题的,我现在用的这个csdn里面例子http://download.csdn.net/detail/dht1228463344/8274597
大乘期
大乘期
你帮我看看,下面我上传了一些我的截图...
0
悲欢灬离合
悲欢灬离合
复制例子的话更需要细心改,有的地方容易遗忘
大乘期
大乘期
我回复你了,在下面的回复...我真不明白哪里错了啦...
大乘期
大乘期
回复 @悲欢灬离合 : 不行呀,不是数据库的问题
大乘期
大乘期
回复 @悲欢灬离合 : 我那个项目在家里,今天给贴上来,不好意思,你们可以帮我看看,我保证什么都是对的...
悲欢灬离合
悲欢灬离合
Invalid bound statement (not found): com.ssm.test.dao.UserInfoDao.insert mapperLocations数据库这边的问题
0
风中的眼睛
风中的眼睛

试试这样

<property name="mapperLocations" value="classpath*:*Mapper.xml" />

风中的眼睛
风中的眼睛
回复 @yinfeng88 : 在src/main/resource/ 下建立 META-INF 目录,按下面路径建立目录,试试看。 <property name="mapperLocations" value="classpath*:META-INF/db/mapper/*.xml" />
大乘期
大乘期
我回复你了,在下面的回复...111
大乘期
大乘期
还是不行...你看看我重新贴的路径
0
williamguang
williamguang

把<sql id="Base_Column_List">这段删除, 用到这个的地方,直接用表的字段代替。

试试吧。 有些mybatis版本不支持

大乘期
大乘期
我回复你了,在下面的回复...
大乘期
大乘期
我试试
0
maradona
maradona

mybatis某些版本的自动扫描很坑爹

既然你已经用了手动配置的方式,还不如先在mapper.xml里手动配置

你这问题应该是没有扫描到xml

或许你得告诉咱你的mybatis的版本

其实最快速的方法是自己去跟源码,org.mybatis.spring.SqlSessionFactoryBean这个类的buildSqlSessionFactory方法  看看有没有加载xml   

maradona
maradona
回复 @yinfeng88 : 可以先尝试一下不用通配符定位,直接写死试试
大乘期
大乘期
回复 @maradona : 我回复你了,在下面的回复...
大乘期
大乘期
回复 @yinfeng88 : 我给你贴上我的项目路径...
maradona
maradona
回复 @yinfeng88 : 还没搞定么...我也是你这个版本,但我做了些修改,可以根据通配符扫描VO类等等 还有把mapperLocations 修改成<property name="mapperLocations" value="classpath*:com/*/*/dao/*.xml" /> 当然这个路径是根据你系统中配置的...
大乘期
大乘期
w我上面给了列子连接,spring4+mybatis3.2.8
0
大乘期
大乘期

我重新建立一个项目,还是一样的,我真的很费解...

你们看看我的路径结构:

下面是spring-mybatis:

spring.xml配置:

下面是实体类的xml配置:

我真的不明白,为什么还是会出错.....

0
ShayZhao
ShayZhao
你这是应该没有找到*Mapper.xml数据库映射文件配置,贴一下你你的mapper文件放到哪了?
ShayZhao
ShayZhao
@yinfeng88 嗯 后来看到了 应该是路径映射的不对 你在好好看下那块路径吧 要么就按我那种 把配置文件配置到resources里面 单独创建一个文件夹进行管理
大乘期
大乘期
上面有目录结构呀...
0
大乘期
大乘期

弄好了,少了一个mybatis-config.xml的文件,然后要配置一个这个:

<property name="configLocation" value="classpath:mybatis-config.xml"/>

就OK,哎,不懂得为什么要这么做...

悲欢灬离合
悲欢灬离合
mybatis-config.xml用别名加,也可以不加的
返回顶部
顶部