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


  这个问题比较简单,其实出现这个问题实质就是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目录下了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2024 CODEPRJ.COM