SpringBoot + MyBatis报错:Invalid bound statement (not found)解决

背景:XML配置文件规范

使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。
Mybatis中使用XML映射文件方式开发,需要符合一定的规范:

  1. XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名);
  2. XML映射文件的namespace属性为Mapper接口全限定名一致;
  3. XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。

在这里插入图片描述
在这里插入图片描述

问题描述

使用SpringBoot集成MyBatis搭建项目并运行测试类的时候,出现了如下错误:
在这里插入图片描述

分析

看报错信息没有找到mapper的XML配置文件,于是检查了XML映射文件中的namespace属性是否与Mapper接口全限定名一致,XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致,反复检查了很久,没发现什么异常。
在这里插入图片描述

既然找的是类路径下的地址,那么去target中看看编译后的UserMapper.xml的位置
在这里插入图片描述
com.patrick.mapper是一个文件夹的名字,而不是

  • com
    • patrick
      • mapper

这样的树形结构,问题就在这里,当我在main的resources下创建存储EmpMapper.xml的文件夹时,直接新建了一个名为com.patrick.mapper的文件夹。
XML配置文件存放在resources目录下,文件夹是存储配置文件的基本单位。新建com.patrick.mapper的文件夹,编译器不会识别小数点,而仅仅是创建一个名为com.patrick.mapper的文件夹

解决方案

把resources目录下的名为“com.patrick.mapper”文件夹直接删掉,创建和接口一样的包名,New Directory的时候,切记包名之间使用/分隔:com/patrick/mapper
在这里插入图片描述
在这里插入图片描述
运行测试类,执行结果如下,问题已解决:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Patrick_Zhu_NEUer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值