出现Invalid bound statement (not found),没有排查出来

出现Invalid bound statement (not found),没有排查出来

老师您好,问一个作业相关的问题,在写控制层首个函数的时候出现错误nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.imooc.bbs.dao.PostDao.selectAll,一直没有排查出来

我分成三个Module,持久层+业务层为第一个,前台控制层+视图为第二个(虚拟目录为/front),后台控制层+视图为第三个(虚拟目录为/back),三个spring的xml配置文件分别为spring-public.xml、spring-front.xml、spring-back.xml,目前已完成持久层+业务层的开发,又专门建了一个测试文档采用spring-test进行测试,是可以从持久层和业务层中读取数据的。然后在开发controller的时候,能够跳转进入我所定义的控制方法,但是无法解析其中的postService

我个人认为是多个module之间的spring配置出了问题,因为在同个module下的测试可以取出数据,贴出我的spring.xml配置代码

spring-public

http://img1.sycdn.imooc.com//climg/5eee0f6a0977ae1807940779.jpg

spring-front


http://img1.sycdn.imooc.com//climg/5eee0f900967f2fc06910251.jpg

老师看看要排除这个问题还需要哪些代码,帮我理理思路

http://img1.sycdn.imooc.com//climg/5eee110e092f865b15590759.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕阿满 2020-06-22 16:46:26

同学你好,不确定同学是如何测试的,按理说在测试时应该报错的。或者同学可以修改一下路径,dao文件和xml文件路径不一致,重新测试,查看是否会提示错误。

祝:学习愉快!

好帮手慕阿满 2020-06-21 14:03:19

同学你好,Invalid bound statement (not found)是绑定错误,这个错误通常是指dao接口和Dao.xml配置文件的映射路径不一致,例如:

http://img1.sycdn.imooc.com//climg/5eeef60a093b724a04470398.jpg

建议同学检查一下这里的路径,注意resource目录下创建文件路径时,应该用斜杠(/)分割,而不时点( . )分割。

如果这里没有问题,建议同学检查一些在公共模块下,展开target文件,查看dao接口和对应的xml配置文件是否在同一个目录下,如:

http://img1.sycdn.imooc.com//climg/5eeef7060971bcf703820192.jpg

前台和后台控制器模块的pom文件中是否引入了公共模块。

<context:component-scan base-package="com.imooc.bbs>这个是扫描当前模块下的路径。

如果通过<import resource=""/>语句调用了另一个module的配置文件,被调用的配置文件中的所有代码在当前配置文件下会全部执行一遍。

祝:学习愉快~

  • 提问者 看看就跑 #1
    您说的这这两处我检查了都没有问题,毕竟都已经用spring-test中测试成功了。在多个module的情况下,我想问下表现层前台和后台通常是放在一起还是分开创建
    2020-06-21 15:36:07
  • 好帮手慕阿满 回复 提问者 看看就跑 #2
    同学你好,前台和后台分成两个模块或者写成一个模块都是可以的,或者同学可以参照oa项目来写。祝:学习愉快~
    2020-06-21 18:03:51
  • 提问者 看看就跑 回复 好帮手慕阿满 #3
    老师,我查出来了,我的dao包下的名字为PostDao,对应的xml文件名字写成了postDao,首字母大小写不同,改过来后在控制器中可以调用。但引申出来了一个问题: 之前为什么通过spring-test测试的时候可以调用,到了控制器中就不能调用。
    2020-06-22 14:23:19
提问者 看看就跑 2020-06-21 10:43:36

补充一些,在不同module下采用spring-test也可以读出持久层和业务层的数据,但是进入到控制器里面的方法后就无法使用持久层或业务层的方法。web-xml文件中感觉也没有什么问题

http://img1.sycdn.imooc.com//climg/5eeec954091b689006150524.jpg

追加一个问题:<context:component-scan base-package="com.imooc.bbs>这句话是只会扫描同个Module下的包路径还是会扫描所有包下的路径。如果通过<import resource=""/>语句调用了另一个module的配置文件,是不是就意味着被调用的配置文件中的所有代码在当前配置文件下全部执行一遍。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师