• mybatis-plus报错:Invalid bound statement (not found)


    mybatis报错:Invalid bound statement (not found)的原因很多,但是正如报错提示一样,找不到xml中的sql语句,报错的情况分为三种:

    第一种:语法错误

    Java DAO层接口

    public void delete(@Param("id")String id);

    Java 对应的mapper.xml文件

    1. "1.0" encoding="UTF-8"?>
    2. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    3. <mapper namespace="xxx.xxx.xxx.Mapper">
    4. <delete id="delete" parameterType="java.lang.String">
    5. DELETE FROM xxx WHERE id=#{id}
    6. delete>
    7. mapper>

    检查:

    • 接口中方法名(delete)与xml文件中 id="delete"是否一致
    • xml文件中的 namespace="xxx.xxx.xxx.Mapper" 中的路径是否与接口文件路径一致
    • parameterType类型 与 resultType类型是否准确;resultMap与resultType是不一样的。

    第二种:编译错误

    定位到项目路径下:target\classes\ 中报错路径下,寻找对应的xml文件是否存在。

    (1)、若不存在对应的xml文件,则需要在pom.xml中加入以下代码:

    1. <build>
    2. <resources>
    3. <resource>
    4. <directory>src/main/javadirectory>
    5. <excludes>
    6. <exclude>**/*.javaexclude>
    7. excludes>
    8. resource>
    9. <resource>
    10. <directory>src/main/resourcesdirectory>
    11. <includes>
    12. <include>**/*.*include>
    13. includes>
    14. resource>
    15. resources>
    16. build>

    删除classes文件夹中文件,重新编译,出现了对应的xml文件即可。

    (2)、若存在xml文件,则打开xml文件,检查其中报错部分是否与源文件一致,不一致,则:

      先清除classes文件夹中文件,执行命令:mvn clean 清理内容,重新编译后即可。

    第三种:配置错误

    (1)在配置文件中指定扫描包时,配置路径有问题。

    例如:spring配置文件中”basePackage” 属性包名的指定一定要具体到接口所在包,而不要写父级甚至更高级别的包 ,否则可能出现问题;cn.dao 与cn.*也可能导致错误;注解扫描时,可能没有扫描到包等。

    (2)yaml配置错误

        如果在resource下面,加了字包,需要在配置文件里面使用层级通配符处理,否则项目启动的时候只能parse第一级目录下的xml文件,子层级的文件无法parse。

    正确配置

    1. mybatis-plus:
    2. configuration:
    3. map-underscore-to-camel-case: true
    4. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    5. mapper-locations: /mapper/**/*.xml #统配符号表示由层级关系

    错误配置

    1. mybatis-plus:
    2. configuration:
    3. map-underscore-to-camel-case: true
    4. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    5. mapper-locations: /mapper/*.xml

    以下上的配置只能parse  mapper包下的xml文件,无法parse target包下面的xml文件,导致在调用mapper中的方法查询的时候就报报错:Invalid bound statement (not found)

  • 相关阅读:
    Rust unix domain socket
    搜索技术——群智能
    路径某个位置更换名称-python
    java:JDBC ResultSet结合Spring的TransactionTemplate事务模板的查询方式
    算法---java实现经典排序算法
    恢复chrome浏览器书签
    全排列[中等]
    【错误:No package snapd available.】在 CentOS 上启用 snap 并安装 snapd
    vu2和vue3的区别
    基于PCA(主成分分析法)对信用评分卡反欺诈案例 代码+数据
  • 原文地址:https://blog.csdn.net/weixin_38829588/article/details/133045614