出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)的解决方法

这篇博客记录并分享我思考这个问题的过程,所以对急于寻找解决问题方法的man来说略显冗余繁琐,写的一般,可以直接跳到最后面的总结。

         我的报错信息是:

               org.springframework.web.util.NestedServletException: Request processing failed;

    nested exception is org.apache.ibatis.binding.BindingException: Invalid bound    

    statement (not found): com.MrCBBS.mapper.UserMapper.selectOneByUAccount

今天,“误删”了Intellij上的项目,准确来说,是“ delete Module ”了项目,重新部署后遇到好多问题,好不容易项目跑起来了,却发现原来的项目出现了没出现过的bug,一直提示我Mybatis写的mapper里面一个方法找不到,可是我查看代码是那个方法就好好的写在那里,对比id属性与接口的方法名也没有错,而且我之前这部分功能是测试过的,所以在确认了不是代码的问题之后,我确信了是项目部署的问题。
我以前在myeclispse上开发,这个代码也是从myeclipse移过来的,潜意识里觉得是编译的问题,所以找了项目里面classes文件并打开这个mapper的xml文件,“惊喜”地发现那个mapper里面确实没有这个方法,这时候想起 idea对classpath的规定 ,它的编译结果并不是放在src下面的classes里面,而是在项目目录等级的.out目录里面,要使它的编译结果放在src下要从新编译;故转而去看.out目录,发现也是一样的mapper,找不到那个方法;进去Intellij的设置里面把编译结果的路径设置在classes(因为习惯而已),重新Build一下项目,结果去看那个mapper还是找不到那个方法,而那个方法却好好的写在我的代码里!
是在没办法,于是我重新从头查看项目部署的配置,最后发现在Module里面的Module SDK选择的是“Project SDK(1.8)”,问题就出在这,我把它改为自己的jdk,点击apply,重启服务器,运行测试,这下就成功重新编译了src目录里面的xml文件。


写了那么多,还是总结一下:
(1)当编译器报MyBatis的mapper里面某个方法找不到时:
1. 仔细对照方法名有没有误,标签里面的属性parameterType、 resultType啊等
等有没有写错,能不能与方法签名对上号;
2. 确认部署没问题之后还是有问题,可以看看是否是xml没有被重新编译,导致项
目找不到新写的方法,转(2);
(2)发现项目没有被编译时:
1. 如果是新导入的项目,查看一下项目的输出路径与之前的是否一致,是否需要
修改输出路径,eclipse系列一般输出到src下(Java文件输出到src/classes下面)
而Intellij输出到.out路径,如果前后有编译器的不同或开发者习惯不同,应留意一
下;
2. 排除输出路径的问题,查看下JDK的版本,Inteallij里面是修改项目的Module
SDK,把它改为自己本地的JDK,路径:Project Structure --> Modules -->
Module SDK 。



  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值