org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):无效的绑定语句(未找到):

文章讲述了在遇到MyBatis的BindingException,提示未找到映射语句时,问题源于maven默认不加载非.java文件。解决方案包括将XML文件移至resources目录,或者在pom.xml中配置扫描路径,以及在application.properties中指定mapper文件位置。

报错

在这里插入图片描述

org.apache.ibatis.binding.BindingException: 
Invalid bound statement (not found):

无效的绑定语句(未找到):com.atProject.zhkt.vod.mapper.CourseMapper.selectCoursePublishVoById

原因

maven加载机制:
maven默认情况下,在src-main-java目录下面,maven只会加载java类型文件,其他类型文件不会加载的
如图:
在这里插入图片描述
target文件中没有xml文件,说明在src-main-java目录下面,maven只会加载java类型文件,其他类型文件不会加载的

解决:

1、直接复制xml文件到target文件中(破坏文件结构不建议)
2、在xml放到resources目录下(破坏文件结构,后续新建xml都要复制)
3、通过配置方式自动加载(直接进这个模块的父工程pom文件下配置xml文件扫描路径)
分为两方面pom.xml 和application

(1):在pom文件project标签内添加扫描路径

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes> <include>**/*.yml</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

(2)在resource文件的properties文件配置扫描路径
在这里插入图片描述

#配置xml扫描路径
mybatis-plus.mapper-locations=classpath:com/atProject/zhkt/vod/mapper/xml/*.xml

解决啦hhh,有帮到你请留个赞让我知道帮到你了,一起快乐翻倍!!!
在这里插入图片描述

### 解决 MyBatis `Invalid bound statement (not found)` 错误 当遇到 `org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)` 错误时,通常意味着 MyBatis 无法找到映射到特定命名空间下的 SQL 语句。此问题可能由多种因素引起。 #### 映射文件配置不正确 如果 Mapper 接口中的方法名称与其对应的 XML 文件内的 ID 不匹配,则会触发该异常。确保 Mapper 接口中定义的方法名与 XML 配置文件里的 `<select>` 或其他标签的 id 属性完全一致[^1]。 ```xml <!-- 正确 --> <mapper namespace="com.example.mapper.UserMapper"> <select id="getUserById" parameterType="int" resultType="User"> SELECT * FROM users WHERE user_id = #{id} </select> </mapper> // 对应 Java 方法签名也需保持同步 public interface UserMapper { User getUserById(int id); } ``` #### 资源加载失败 有时即使路径看起来是对的,但如果资源没有被正确打包进最终的应用程序包里(比如 JAR),也会导致此类错误发生。对于 Maven 构建工具来说,应该确认项目的 `pom.xml` 是否包含了合适的资源过滤规则来包含这些 XML 文件[^5]。 ```xml <build> <resources> <!-- 确保 resources 下面的 xml 文件会被编译进入 classpath --> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources> </build> ``` #### 缺少必要的依赖项或版本冲突 某些情况下,可能是由于缺少了必需的库或者是不同版本之间的兼容性问题所引起的。检查应用程序使用的 MyBatis 及其扩展插件(如 MyBatis Plus)是否都处于最新稳定版,并且相互之间不存在版本差异[^2]。 #### 名字空间声明不当 在 XML 映射文档顶部指定的名字空间应当精确对应于相应的 DAO/Repository 类全限定类名。任何拼写上的失误都会造成找不到绑定语句的情况出现[^3]。 ```xml <!-- 错误示范 --> <mapper namespace="com.exmaple.userdao"> <!-- 注意这里 "exmaple" 的拼写 --> <!-- 正确方式 --> <mapper namespace="com.example.userDao"> ``` 完成上述调整之后,建议清理并重新构建整个工程以确保更改生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值