解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题

  • Post author:
  • Post category:其他


我是用到了maven项目,整合ssm框架,同时运用了mybatis逆向工程

在这里插入图片描述

这个问题真的困扰我了好久!!!!网上的方法大都是Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上。在我一遍一遍仔细的对照之后,发现我的这些接口以及包名等等并没有错误。。。接下来就是艰难的解决过程:


问题一:


此时我发现了,根据mybatis逆向工程创建的bean实体类和数据库的有些属性名对应不上,比如Department实体类属性是id,数据库的是dept_id,明显这是不可行的。所以这时候我就在连接数据库的url上添加了属性

nullCatalogMeansCurrent=true

,把所有文件涉及到的连接数据库的url都加上了以上属性。

jdbc.jdbcUrl=jdbc:mysql://localhost:3306/ssm_mycrud?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true

有人可能会想为什么要拼接这么长的字符串,其实我也不太清楚,可能是和我的mysql版本是8.0的有关吧,用此版本可以能会出现一些异常,具体可以看这篇文章。


https://blog.csdn.net/weixin_40845165/article/details/84140606



问题二:


在我解决了逆向工程生成实体类的属性名对应不上的问题后,发现还是运行不了!!还是出现这个错误。。。。这个错误的意思大概是找不到此mapper文件吧,因为此时target文件下也没看到这些mapper文件,此时只需要在pom.xml中添加此段代码。

<resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>mapper/*Mapper.xml</include>
          <include>*.xml</include>
          <include>*.properties</include>
        </includes>
      </resource>

因为我的目录是把mapper文件夹放在resoures下,如果没有此段代码,是找不到mapper.xml文件在哪里的。

在这里插入图片描述

至于是什么原因造成的,以下文字段复制了其他博主的说法


https://www.cnblogs.com/hzdzkjdxygz/p/8149658.html


原因是:maven默认会把src/main/resources下的所有配置文件以及src/main/java下的所有java文件打包或发布到target\classes下面,但是现实我们可能会在src/main/java下面也放置一些配置文件如hibernate配置文件或mybatis mapper配置文件等,如果不做一些额外配置,那我们打包后的项目可能找不到这些必须的资源文件,因此在pom.xml中增加类似如下配置,这样就会将src/main/java下的xml文件随同java编译后的class文件一同copy到相应的class目录。



版权声明:本文为matchless_QYW原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。