绑定异常 Invalid bound statement (not found): com.fwind.blog.dao.mapper.TagMapper

本文分享了在SpringBoot项目中遇到的TagMapper绑定异常,原因在于resources目录下不同层级路径的使用规则。通过重新组织路径,解决了问题并提醒开发者注意资源文件路径的正确书写。

绑定异常 Invalid bound statement (not found): com.fwind.blog.dao.mapper.TagMapper

今天springBoot项目报了绑定异常,也就是项目java包下的TagMapper不能跟resources下的TagMapper.xml对应,但是明明路径包是一样的
在这里插入图片描述

在这里插入图片描述
后来才知道,resources下建多个包要用/分割路径而不能用.
在这里插入图片描述
resources重新建一下路径就运行成功了。。。

如果觉得我的经验对你有帮助,不妨点个赞再走吧!

<think>我们正在处理的问题:解决 'Invalid bound statement (not found): com.park.mapper.UserMapper.selectByUserName' 错误 根据提供的引用内容,这个错误通常是由于MyBatis无法找到与Mapper接口方法对应的SQL语句映射(在XML文件中)引起的。 引用[1]提到:需要配置mybatis.mapper-locations属性指向mapper.xml文件的位置。 引用[2]提供了几个可能的原因和解决方法: 1. mapper.xml中的namespace和实际的Mapper接口不一致。 2. mapper接口中的方法名和mapper.xml中的id不一致。 3. target目录下没有正确的mapper.xml文件(可能是因为构建问题,或者文件内容不一致)。 引用[3]则提供了一种通过Maven配置来确保XML文件被正确打包的方法。 因此,我们可以按照以下步骤进行排查: 步骤1:检查application.properties/application.yml中是否配置了mybatis.mapper-locations 步骤2:检查Mapper接口(UserMapper)的namespace是否正确 步骤3:检查XML文件中的id是否与接口方法名一致 步骤4:检查构建过程是否将XML文件复制到了target目录 详细步骤: 1. 配置mapper-locations属性: 在application.properties中添加(假设你的mapper.xml文件在resources/mapper目录下): mybatis.mapper-locations=classpath:mapper/*.xml 或者在application.yml中: mybatis: mapper-locations: classpath:mapper/*.xml 2. 检查namespace: 打开UserMapper.xml文件,查看namespace属性是否为com.park.mapper.UserMapper(即Mapper接口的全限定名)。 例如:<mapper namespace="com.park.mapper.UserMapper"> 3. 检查方法名和id: 在UserMapper.xml中,应该有一个id为"selectByUserName"的SQL语句(如<select id="selectByUserName" ...>),并且对应的Mapper接口中有一个名为selectByUserName的方法。 4. 检查target目录: 构建后,在target/classes目录下应该有对应的UserMapper.xml文件(例如:target/classes/mapper/UserMapper.xml),并且内容应该与源文件一致。 如果发现不一致,可以尝试清理并重新构建项目(使用mvn clean install或IDE的clean and build功能)。 5. 如果使用Maven,确保在pom.xml中配置了资源过滤(特别是当XML文件放在src/main/java目录下时,但通常推荐放在src/main/resources下): 引用[3]中给出了一种配置方式,将src/main/java目录下的xml文件也包含进资源中。但是,如果我们的XML文件在resources目录下,则不需要此配置。如果确实放在java目录下,则需要配置: <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> ... (其他配置) </build> 6. 如果以上步骤都正确,可能是IDE的缓存问题,尝试重启IDE或重新构建项目。 总结:按照以上步骤逐一检查,通常可以解决该问题。 生成相关问题: 1. 如何配置MyBatismapper-locations属性? 2. MyBatisMapper接口和XML映射文件如何对应? 3. Maven项目如何包含非资源目录下的XML文件? 4. 如何解决MyBatisInvalid bound statement错误? 5. 在Spring Boot中如何正确使用MyBatis? </think> 根据引用内容分析,"Invalid bound statement (not found)" 错误是 MyBatis 最常见的映射问题,针对 `com.park.mapper.UserMapper.selectByUserName` 错误,请按以下步骤排查: ### 一、核心排查步骤 1. **检查 XML 文件位置** - 确认 `UserMapper.xml` 文件在 `resources/mapper/` 目录下(推荐路径) - 在 `application.properties` 添加配置: ```properties mybatis.mapper-locations=classpath:mapper/*.xml ``` 或在 `application.yml` 中配置: ```yaml mybatis: mapper-locations: classpath:mapper/*.xml ``` 2. **验证 namespace 一致性** 打开 `UserMapper.xml` 文件,检查命名空间是否匹配: ```xml <mapper namespace="com.park.mapper.UserMapper"> ``` 3. **核对 SQL ID 与方法名** 确保 XML 中的 SQL ID 与接口方法名**完全一致**(区分大小写): ```xml <select id="selectByUserName" resultType="..."> SELECT * FROM user WHERE username = #{username} </select> ``` 对应接口方法: ```java public interface UserMapper { User selectByUserName(String username); } ``` 4. **检查构建结果** 查看 `target/classes/mapper/` 目录: - 是否存在 `UserMapper.xml` 文件 - 文件内容是否与源码一致(常见问题:修改未编译) ### 二、进阶解决方案 1. **Maven 资源过滤配置** 若 XML 放在 `src/main/java` 目录下,需在 `pom.xml` 添加: ```xml <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build> ``` 2. **清理并重新构建** 执行 Maven 命令: ```bash mvn clean compile ``` 或使用 IDE 的 "Clean and Rebuild" 功能 3. **检查注解冲突** 若同时使用 `@Select` 注解和 XML: ```java // 错误示例:注解与XML重复定义 @Select("SELECT * FROM user") User selectByUserName(String username); ``` 需移除其中一个定义 ### 三、排查工具技巧 1. **查看加载的映射文件** 启动时添加调试参数: ```properties logging.level.org.mybatis=DEBUG ``` 观察日志中是否出现: ``` Mapped Statements: {com.park.mapper.UserMapper.selectByUserName} ``` 2. **IDE 文件对比** 右键点击 `UserMapper.java` → "Compare With" → 与 `target/classes/` 中的对应文件比较 > 经验总结:该错误 90% 由**路径配置**或**命名不一致**引起,优先检查 `mybatis.mapper-locations` 和 XML 中的 `namespace`[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值