首页 > 其他 > 详细

Invalid bound statement (not found)错误的可能原因

时间:2021-06-04 00:01:28      阅读:61      评论:0      收藏:0      [点我收藏+]

  这个问题比较简单,其实出现这个问题实质就是mapper接口和mapper.xml文件没有映射起来。

  有些细节可以逐一排查,常见的错误如下:

1、检查xml文件所在package名称是否和Mapper interface所在的包名

<mapper namespace="com.enmox.emcs.market.dao.MarketDao">

  mapper的namespace写的不对!我之前是从别的模块复制的,只改了 MarketDao,没有改前面的 market.dao.MarketDao,导致报错。

2、看下mapper的XML配置路径是否正确

mybatis:
  mapper-locations: classpath*:mybatis/**/*.xml
  executor-type: simple
  config-location: classpath:mybatis-config.xml
  type-aliases-package: com.***.user.model,***,com.***.market.model

  type-aliases-package:配置映射类所在的包名

  这个有时候是报 ClassNotFound 的错。

3、MarketDao 的方法在 MarketDao.xml 中没有,然后执行MarketDao的方法会报此错误。

  即mapper接口中的方法名和mapper.xml中的id标签不一致,这个问题解决方法一样,仔细对对。

4、MarketDao 的方法返回值是 List<market>,而select元素没有正确配置ResultMap,或者只配置ResultType!

5、以上问题都没有,但是还是不行,可能原因就是,没有构建进去,打开target看看对应的mapper.xml文件在不在

技术分享图片

  如果不在的话,clean一下,maven项目,然后再启动。

6、pom.xml文件中配置resource,不然mapper.xml文件就会被漏掉!pom.xml的中配置了resource,bug消失了~

<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<resources>
  <resource>
    <directory>src/main/java</directory>
    <includes>
      <include>**/*.properties</include>
      <include>**/*.xml</include>
    </includes>
    <filtering>false</filtering>
  </resource>
  <resource>
    <directory>src/main/resources</directory>
    <includes>
      <include>**/*.properties</include>
      <include>**/*.xml</include>
    </includes>
    <filtering>false</filtering>
  </resource>
</resources>

7、mapper-locations路径配置不对:

// 原配置如下:
mybatis:
mapper-locations: classpath:signin\src\main\resources\mapperxmlmapperxml/.xm 

//此为绝对路径。修改配置路径如下:
mybatis:
mapper-locations: classpath:mapperxml/.xml

  之前是绝对路径所以扫描不到,修改了之后再编译,项目代码就不是之前的绝对路径了,已经到target目录下了。

Invalid bound statement (not found)错误的可能原因

原文:https://www.cnblogs.com/goloving/p/14847334.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!