org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.wen.mapper.User

最近在使用 MyBatis 框架时遇到这个问题:

在这里插入图片描述
后来检查到是因为自定义了 mapper 文件夹,导致项目找不到默认路径了。需要重新配置路径。

在这里插入图片描述
如果想要详细了解这个错误,可以接着看下去。


这个错误信息表明在 Spring Boot 项目中整合 MyBatis 时,MyBatis 无法找到对应的映射器文件(mapper XML )或接口中定义的selectById方法。

BindingException通常发生在MyBatis尝试绑定一个不存在的SQL语句到接口方法时。

  • org.apache.ibatis.binding.BindingException : 这个异常表示在绑定 SQL 语句到接口方法时出现了问题。
  • Invalid bound statement (not found): com.wen.mapper.TbUserMapper.selectById :这说明 MyBatisTbUserMapper 接口中找不到 selectById 方法的绑定语句。这通常意味着对应的 SQL 语句没有被正确定义,或者 MyBatis 没有正确加载映射器文件。

检查映射器文件

  • 确认 TbUserMapper.xml 文件存在,并且位于正确的位置(通常是 src/main/resources/mapper 目录下),这是在没有自定义 mapper 文件夹路径的情况下。
  • 确保文件中有一个 <select> 标签,其 id 属性与接口中的 selectById 方法相匹配。

例如,TbUserMapper.xml文件中应该有以下内容:

<mapper namespace="com.wen.mapper.TbUserMapper">
    <select id="selectById" resultType="com.wen.entity.TbUser">
        SELECT * FROM tb_user WHERE id = #{id}
    </select>
</mapper>

检查接口方法:

  • 确认TbUserMapper接口中确实有一个 selectById 方法,并且方法签名与映射器文件中的 <select> 标签相匹配。

例如,TbUserMapper 接口中应该有以下方法:

@Mapper
public interface TbUserMapper {
    TbUser selectById(Long id);
}

配置文件检查:

  • 确认application.ymlapplication.properties文件中 MyBatis 的配置是否正确,确保 MyBatis 知道在哪里查找映射器文件。

例如,在application.yml中:

mybatis:
  mapper-locations: classpath:mapper/*.xml

依赖检查:

  • 确保你的项目中包含了 MyBatisMyBatis-Spring-Boot-Starter 的依赖,并且版本是兼容的。

一般出现 BindingException 情况就以上几种。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值