Invalid bound statement (not found)

首先申明的是这个错误一般是使用mybatis方法没有找到或者参数不匹配等原因造成的!
我首先遇到这个问题是将一个项目从eclipse迁移到idea产生的这个问题,到现在也没明白为什么eclipse上能正常运行,idea上就不能正常启动,所以这个问题着实困扰了我很久,今天把这个问题的解决办法梳理一下,肯定也没整理完,希望博友能给我补充。
首先来说下碰见这种问题我们先检查什么,也就是先检查是不是因为粗心造成的错误:
1.检查xml文件的namespace是否正确
2.检查mapper.xml文件中是否有要执行的方法,或者看方法名是否写错
3.查看mapper.xml中sql语句的返回值是否正确,避免出现方法返回的是List,而select元素中只配置了resultType,或者resultMap配置错误(提示:select元素中的parameterType可以省略,系统可以自动识别)。
以上问题就是比较容易发现的问题,也是频率出现最多的问题,但是我将上述问题都检查了一遍,发现都是正确的,所以自己就很纳闷了,下面我先贴出我的代码结构:
代码结构mapper.xml文件内容调用mapper层的代码下面贴出我运行程序时报的错:
异常情况
所以可以看出我的代码应该是没有错的,毕竟我这个项目在eclipse中还是可以正常启动的,在经历了两天的折磨后,终于把这个问题找到了,这个问题的原因就是我的mybatis的映射文件是写在src/main/java/mapper文件里面的,而这个包下面的xml文件不会自动打包classes,所以出现了找不到文件,后来查阅资料知道了src/main/java里面除了java文件,其他的不会打包到classes,所以才找不到。
但是我这里还有个问题,因为我是在applicationContext.xml里面配置了扫描mapper层下面的xml文件,也不知道是不是eclipse和idea的区别,在eclipse中我这样配置了就能扫描到,可是idea中却不行(各位博友如果知道可以告诉我答案)。
applicationContext.xml配置内容
网上有资料说的是applicationContext.xml中配置的是要扫描的路径 resource是打包到classes里面 才能扫描。
所以在这里有个解决办法就是把所有xml文件打包到resource文件夹下,可以在resource文件下新建一个mapper文件夹来专门存放xml文件,当然这里还要修改applicationContext.xml中的配置信息,修改后截图如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看见结果已经成功出来了,不过如果各位小伙伴不想修改自己代码结构了,毕竟迁文件夹还是比较麻烦,这里还有另外一种办法,只需要在pom.xml中的build标签中加入以下一段代码

   <resources>
		     <resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</resource>
	</resources>

在这里插入图片描述
加上该配置后上面的问题也同样解决了,运行出来效果一样。
以上就是我这次碰到这个问题的分享,如果小伙伴们有补充的,欢迎留言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值