Invalid bound statement (not found)

本文详细解析了一个SSM项目中MyBatis配置出现的问题及解决方案,包括如何正确配置XML映射文件的位置,以及如何通过修改POM文件确保XML文件能够被正确打包。

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

Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.sm.dao.SMUserLoginDao.sm_userlogin

自己无聊新搭一个ssm项目,搭完运行报错。百度上有很多答案但都不是我犯的错误。

这是我的文件结构


很多人报错是因为

1、SMUserLogin.xml文件<mapper>的namespace路径不对


2、SMUserLogin.xml文件<select>的id名和SMUserLoginDao中对应的方法名不一致


3、下面来说一下我的报错:

Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.sm.dao.SMUserLoginDao.sm_userlogin

报这个错,是因为我的mybatis的映射文件写在entity包下的,而entity包下的这个SMUserLogin.xml文件不会自动打包classes ,所以会出现找不到文件。

(src/main/java 里面的除了java文件 其他的不会打包到classes 所以会出现文件找不到的文件。)

既然不会自动打包,那么就需要配置,需要在pom.xml 中配置。

下面是pom.xml文件中的补存内容


我之前还一直疑问,在applicationContext.xml中我已经有配置过了


那是因为,applicationContext.xml中配置的是要扫描的路径   resource是打包到classes里面 才能扫描。

所以最终在pom.xml中的<build>标签中加<resources>...<resources>这一段代码就好

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

4、下面再说一个我这个报错原因可以解决的方法。

因为前面说到:(src/main/java 里面的除了java文件 其他的不会打包到classes 所以会出现文件找不到的文件。)

那么我们把mybatis映射文件SMUserLogin.xml一类的映射文件放到resources中就不用在pom.xml中写<resources></resources>那一段了。

注:但是不能直接放resources文件夹 要先在里面创建一个文件夹 比如 mapper 然后修改applicationContext.xml的配置 


这样处理之后,pom.xml中<resources></resources>那一段就可以删掉了。






总结:之所以一直找不到原因所在,是因为还不了解项目运行方式以及项目运行结构。

解决:需要多关注了解项目运行的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒笑翻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值