项目启动无问题,Junit测试下Mybatis报错org.apache.ibatis.binding.BindingException: Invalid bound statement

报错详情:

Spring+Mybatis项目,正常启动没问题,在使用Junit测试的时候,Mybatis找不到对应的SQL的XML文件。报错信息如下
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

解决方法:
  • 原Mybatis扫描XML的配置
<property name="mapperLocations"  >
	<list>
		<value>classpath:com/modules/**/mapper/*.xml</value>
	</list>
</property>
  • 更改之后Mybatis扫描XML的配置
<property name="mapperLocations"  >
	<list>
		<value>classpath*:com/modules/**/mapper/*.xml</value>
	</list>
</property>

即:classpath 改为 classpath*

原因:

classpath本质是jvm的根路径,jvm获取资源都是从该根路径下找的,注意这个根路径是个逻辑路径,并不是磁盘路径。比如两个jar包的路径是/a/a.jar和/b/b.jar,但是用classpath*:就可以找到这两个jar包中的资源。

一般classpath指向的是classes,也就是编译路径的根路径,而一般classes中放着这些文件:

1.java文件编译好的class文件。

2.properties配置文件。

3.xml配置文件。

4.一些模版文件,如*.ftl。

5.其他需要用classpath获取到的文件。

搞懂了classpath指向的classes里放的东西,我们再来看看classpath: 和classpath*:的区别。

1.classpath:只会到你的classes路径中查找找文件。
2.classpath*:不仅会到classes路径,还包括jar文件中(classes路径)进行查找。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值