MyBatis绑定错误:Invalid bound statement (not found)

当使用MyBatis时遇到Invalid bound statement (not found)错误,通常是由于Mapper XML文件与接口不在同一目录下。在Eclipse中可以直接在src下放置XML文件,但在Idea中需要特别配置。Maven打包时不包含src/main/java下的资源文件,需将XML文件移动到resources目录,并在Spring配置中指定mapperLocations。或者,可以采用注解方式在Mapper接口中直接写SQL,避免XML文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyBatis绑定错误:Invalid bound statement (not found)

问题的本质:

ideamaven项目出现Invalid bound statement (not found)错误,网上找了下发现我的是因为出现map.xml文件与map接口不在同一个文件夹下。问题的发生是由于我把资源文件放在src/main/java/com.Adesk/mapper下,在eclipse中,把资源文件放在src文件夹下,是可以找到的;但是在idea中,直接把资源文件放在src文件夹下,如果不进行设置,是不能被找到的。

 

我们看下maven为我们打包的target

 

我们看到UserMapper.xml并不在里面,即使xxx.xml文件与对应的接口文件不在同一个目录下。也可以理解为maven打包class文件时不打包里面的资源文件,原因是maven有固定放资源文件的目录,resources,这样根据mybatis默认设置是不能进行映射的。

解决办法:

l 方法一

把所有的map.xml文件移动resources目录下,再spring-mvc.xml找到

 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

加入如下配置

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

图如下


 

有些项目可能不在spring-mvc.xml中注入dataSource,那就自己找

 

l 方法二

这种就不是解决该错误的办法,而是换另一种方式查数据库,如果你觉得通过映射文件比较麻烦那么这里有一种注解的方式,就是直接在map接口中写sql语句通过注解的方式,那么就省掉了map.Xml文件,

 

相对于自己写sql语句来说,个人认为之中方式比较好用,但是mybatis 的逆向工程也是挺好的。个人喜好。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值