首页 > 技术文章 > Spring Boot项目提示Invalid bound statement (not found)

qsymg 2018-10-22 16:12 原文

相信这个问题,网上有很多类似的问题,不外乎是mapper.xml的文件没有映射到namespace的接口,或者接口名没有和SQL的id相同等等。

但今天遇到了一个特别的坑,费了很长时间,这里特地说一下。

在排除了所有的问题后,最后无意中发现了是spring boot的启动配置文件问题,我是用的yml文件的方式,这里有个特别要注意的地方。

这里先介绍下,yml的配置和一般的properties不同。

properties配置方式,如下:

mybatis.configuration.default-statement-timeout=25000
mybatis.mapper-locations=classpath:mapping/*.xml

yml配置方式,如下:

mybatis:
  configuration:
    map-underscore-to-camel-case: true
  mapper-locations: mybatis/**/*Mapper.xml //这里有一定要和configuration保持平级

可以看出yml采用树形结构,更加简洁,但更容易出错,

因为不加分号,所以层次结构,必须得规规整整,我就是因为将mapper-location和 map-underscore-to-camel-case: true保持平级,成为了configuration的子节点。

所以实际上的配置是 mybatis.configuration.mapper-locations: mybatis/**/*Mapper.xml,自然是配置出现了问题。

而 mapper-locations是应该属于mybatis节点的,这才踩了一个非常容易出现错的地方,一定要牢记。

推荐阅读