springBoot:Invalid bound statement (not found): com.hry.seckill.mapper.GoodsMapper.getGoodsVoList

欢迎大家关注我的公众号,添加我为好友!

在学习springBoot做秒杀项目的时候遇到了

“ Invalid bound statement (not found): com.hry.seckill.mapper.GoodsMapper.getGoodsVoList”的错误。

错误提示:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.hry.seckill.mapper.GoodsMapper.getGoodsVoList
	at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:225)
	at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)
	at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58)
	at com.sun.proxy.$Proxy68.getGoodsVoList(Unknown Source)
	at com.hry.seckill.service.impl.GoodsServiceImpl.getGoodsVoList(GoodsServiceImpl.java:18)
	at com.hry.seckill.controller.GoodsController.list(GoodsController.java:28)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

大致意思就是找不到mapper配置文件

解决办法:

1.检查application.properties中的配置

 

# 定义mapper.xml配置文件位置
mybatis.mapper-locations=classpath:mapper/*Mapper.xml

2.根据配置文件查看自己编写的配置文件是否放错位置(我这里就放错了……)

3.修改正确位置

4.重启项目即可。

欢迎大家关注我的公众号,添加我为好友!

在 Spring Boot 应用中出现 `Invalid bound statement (not found): cn.itsurtce.springbottour.dao.UserDao.selectById` 错误,通常表明 MyBatis 无法找到与接口方法相对应的 SQL 映射语句。这种问题可能由多个因素导致,包括但不限于映射文件未正确加载、命名空间配置错误、或接口与 XML 文件不匹配等。 ### 常见原因及解决办法 #### 1. **Mapper XML 文件未被正确加载** Spring Boot 默认不会自动包含 `src/main/java` 目录下的 XML 文件。如果 Mapper XML 文件位于 Java 源代码目录中,则需要在 `pom.xml` 中添加资源过滤配置,确保这些文件能够被编译到目标目录中 [^3]。 ```xml <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> </build> ``` #### 2. **XML 文件中的 namespace 与 DAO 接口不一致** 每个 MyBatis 的 Mapper XML 文件都必须指定一个 `namespace`,该值应当等于对应接口的全限定类名。例如,如果 `UserDao` 接口位于包 `cn.itsurtce.springbottour.dao` 下,则其对应的 XML 文件中应该如下所示: ```xml <mapper namespace="cn.itsurtce.springbottour.dao.UserDao"> <select id="selectById" resultType="..."> SELECT * FROM user WHERE id = #{id} </select> </mapper> ``` 若两者名称不一致,MyBatis 将无法将接口方法与 XML 中的 SQL 语句绑定起来 [^2]。 #### 3. **未正确注册 Mapper 接口或 XML 文件** 在 Spring Boot 应用中,可以通过两种方式注册 MyBatis 的 Mapper:一种是使用注解(如 `@MapperScan`),另一种是在 MyBatis 配置文件中手动注册。 - **使用 `@MapperScan` 注解** ```java @SpringBootApplication @MapperScan("cn.itsurtce.springbottour.dao") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` - **在 `mybatis-config.xml` 中注册 Mapper** ```xml <mappers> <mapper class="cn.itsurtce.springbottour.dao.UserDao"/> </mappers> ``` 确保所有涉及的接口和 XML 文件都被正确注册 [^2]。 #### 4. **检查文件路径是否正确** XML 文件应当放置在资源目录(通常是 `src/main/resources`)下,或者确保 `pom.xml` 中已配置了正确的资源路径以包含 Java 源码目录中的 XML 文件 [^3]。 #### 5. **确认项目构建后 XML 文件存在于 classpath 中** 执行 Maven 构建命令后,检查 `target/classes` 目录下是否存在相应的 XML 文件。如果没有,说明资源过滤配置可能存在问题 [^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值