springboot整合mybatis错误 Invalid bound statement (not found): 解决办法

原因解析:

mapper 层的 Mapper 接口与 xml 文件映射出现问题、或 mapper 接口直接找不到xml文件。

解决方法:

一、查看 target 下是否打包了 xml 文件。

有一种情况是 xml 文件没有放在 resources 目录下,而放在了java包下,导致打包后 target/class 目录下没有 xml文件。

解决:pom.xml 中添加:

<resources>
            <resource>
                <directory>src/main/java</directory>
                <!-- 此配置不可缺,否则mybatis的Mapper.xml将会丢失 -->
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <!--指定资源的位置-->
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>

二、查看 xml文件中 namespace 与 接口是否对应正确,id 与方法名是否对应

三、如果以上都没有问题,那么再查看 application.yml 中关于 mybatis 的配置。

敲黑板!!!
敲黑板!!!

注意两点:
1、mybatis: 是顶层元素,所谓顶层元素,就是在页面最左边,前面不要有空格、不然会被包含在前面一个大块中
(我被这么个细节折磨了好久)

2、尽量用 classpath* 不要用 classpath
classpath:只会到你指定的class路径中查找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找

#mybatis:
mybatis:
  mapperLocations: classpath*:/com/user/mappers/*.xml

四、终极解决办法

将 mapper 层接口与 xml 文件的路径保持一致。这样可以直接免去 application.yml 中的配置,
在打包时会将xml文件打包到 mapper 接口所在的包下。
如下图:

在这里插入图片描述

这样出错得概率最小

注:一些博客上分析在 入口处使用 @MapperScan 注解,这个注解是为了 扫描 mapper层接口的,不能解决这个问题。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
SpringBoot整合Mybatis时,出现"Invalid bound statement (not found)"这个问题的实质是mapper接口和mapper.xml没有正确地映射起来。 为了解决这个问题,你可以按照以下步骤进行操作: 1. 首先,确认你的mapper接口和mapper.xml文件位于正确的位置,并且它们的命名规范是一致的。通常情况下,mapper接口应该位于`com.smbms.mybatis.mapper`包下,而mapper.xml文件应该位于`resources/mapper`目录下。 2. 确保在主配置文件(即application.properties或application.yml)中添加了正确的配置。根据引用中的代码示例,你需要在application.properties文件中添加如下配置: ``` mybatis.typeAliasesPackage=com.smbms.mybatis.popj mybatis.mapperLocations=classpath:mapper/*.xml ``` 这样配置后,Mybatis就能正确地找到mapper.xml文件并与mapper接口进行映射。 3. 最后,重新编译和运行你的项目,确保没有其他错误导致该问题。如果问题仍然存在,可以检查一下mapper接口中的方法名和mapper.xml文件中的SQL语句是否一致,另外也可以尝试重新生成mapper接口和mapper.xml文件。 通过以上的步骤,你应该能够解决"Invalid bound statement (not found)"的问题,并成功实现SpringBootMybatis整合。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [springboot整合mybatis出现Invalid bound statement (not found)](https://blog.csdn.net/weixin_56044831/article/details/116863995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [SpringBoot整合mybatis时报Invalid bound statement (not found)错误的可能原因](https://blog.csdn.net/wsaicyj/article/details/124286481)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值