You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mybatis绑定异常:无效绑定语句未找到问题求助

排查MyBatis Invalid bound statement (not found)异常原因及解决方法

错误信息

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.mysite.hrmanager.repository.mapper.MstBizExpMapper.selectAll
at org.apache.ibatis.binding.MapperMethod$SqlCommand.(MapperMethod.java:235) ~[mybatis-3.5.9.jar!/:3.5.9]
at org.apache.ibatis.binding.MapperMethod.(MapperMethod.java:53) ~[mybatis-3.5.9.jar!/:3.5.9]
at org.apache.ibatis.binding.MapperProxy.lambda$cachedInvoker$0(MapperProxy.java:108) ~[mybatis-3.5.9.jar!/:3.5.9]
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705) ~[na:na]
at org.apache.ibatis.util.MapUtil.computeIfAbsent(MapUtil.java:35) ~[mybatis-3.5.9.jar!/:3.5.9]
at org.apache.ibatis.binding.MapperProxy.cachedInvoker(MapperProxy.java:95) ~[mybatis-3.5.9.jar!/:3.5.9]
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) ~[mybatis-3.5.9.jar!/:3.5.9]
at com.sun.proxy.$Proxy82.selectAll(Unknown Source) ~[na:na]
at com.mysite.hrmanager.service.MstBizExpService.selectAll(MstBizExpService.java:23) ~[classes!/:na]
at com.mysite.hrmanager.controller.DemoController.fetchExpsDetailList(DemoController.java:32) ~[classes!/:na]

核心原因及解决方法

1. Mapper XML未被Gradle打包(最可能原因)

你的Mapper XML文件放在src/main/java下的包路径中,但默认Gradle不会将Java源码目录下的XML文件复制到编译后的输出目录,导致MyBatis无法读取到映射文件。

解决:在build.gradle中添加资源配置,让Gradle扫描并打包Java目录下的XML文件:

sourceSets {
    main {
        resources {
            srcDirs 'src/main/java'
            include '**/*.xml'
        }
    }
}

2. 缺少MyBatis基础配置

当前application.properties中没有指定MyBatis的Mapper文件位置和实体类别名包,补充配置可确保MyBatis正确加载映射文件:

解决:在application.properties中添加:

mybatis.mapper-locations=classpath:com/mysite/hrmanager/repository/mapper/*.xml
mybatis.type-aliases-package=com.mysite.hrmanager.entity

3. SQL语句错误(额外问题)

当前XML中的SQL语句select * from engineer_id存在问题,engineer_id是字段名而非表名,应替换为实际业务表名(比如mst_biz_exp),否则绑定成功后会触发表不存在的错误:

修正SQL:

<select id="selectAll" resultMap="mstBizExpMapper">
    select * from mst_biz_exp
</select>

4. 确认Mapper匹配规范(当前代码已符合,需持续遵循)

  • 确保Mapper XML的namespace与接口全类名完全一致
  • 确保XML中SQL标签的id与接口方法名完全一致
  • 确保Mapper接口添加了@Mapper注解

内容的提问来源于stack exchange,提问作者user19703189

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:06:25