maven项目中mybatis的Mapper文件没有编译,导致错误org.apache.ibatis.binding.BindingException: Invalid bound statement

本文介绍如何在Maven项目的pom.xml文件中配置资源文件,确保src/main/java目录下的XML文件能够被正确包含并过滤处理。

在pom.xml 的build中加入

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
    </resource>
</resources>

`org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.atguigu.mybatis.mapper.TigerMapper.deleteTiger` 错误通常表示 MyBatis 在 `TigerMapper` 接口中找不到 `deleteTiger` 方法的绑定语句,可能是对应的 SQL 语句没有被正确定义,或者 MyBatis 没有正确加载映射器文件。以下是一些可能的解决方法: ### 1. 检查 Mapper 接口与 XML 映射文件的命名和路径 Mapper 中的接口类必须与 XML 同名,且要保证 XML 文件放在正确的路径下。例如,`TigerMapper.java` 对应的 XML 文件应该是 `TigerMapper.xml`,并且 XML 文件要放在 MyBatis 能扫描到的路径中。若在创建 XML 文件没有先创建 `mapper` 层并将其放在该目录下,可能会导致扫描不到文件错。可以在 `application` 中查看扫描 XML 的路径是否正确 [^4]。 ### 2. 检查 XML 映射文件内容 确保 `TigerMapper.xml` 文件中定义了 `deleteTiger` 方法对应的 SQL 语句,且命名空间(`namespace`)指向 `com.atguigu.mybatis.mapper.TigerMapper`。示例代码如下: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.atguigu.mybatis.mapper.TigerMapper"> <delete id="deleteTiger"> <!-- 这里编写具体的删除 SQL 语句 --> DELETE FROM tiger_table WHERE some_condition; </delete> </mapper> ``` ### 3. 检查 MyBatis 配置 确保 MyBatis 配置文件中正确加载了映射器文件。如果使用 Java 代码配置 `SqlSessionFactory`,可以参考以下示例: ```java import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import javax.sql.DataSource; @Configuration public class MyBatisConfig { @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); sessionFactoryBean.setTypeAliasesPackage("com.atguigu.mybatis.model"); sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/mapper/*.xml")); return sessionFactoryBean.getObject(); } } ``` 上述代码中,`setMapperLocations` 方法指定了 MyBatis 扫描映射器文件的路径 [^3]。 ### 4. 检查 Maven 配置 如果项目使用 Maven 构建,确保 `resources` 目录下的 XML 文件被正确打包。可以在 `pom.xml` 中添加以下配置: ```xml <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build> ``` ### 5. 检查 IDE 缓存 有时候 IDE 的缓存会导致文件没有正确编译或加载,可以尝试清除 IDE 的缓存并重新构建项目。 ### 6. 检查 MyBatis 版本兼容性 确保使用的 MyBatis 版本与项目中的其他依赖兼容,不兼容的版本可能会导致一些意外的错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值