Invalid bound statement (not found)问题原因,以及解决方式

Invalid bound statement (not found)问题原因,以及解决方式

问题描述

新建立一个模块,调用接口时,发现所有接口报错

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ronwe.cmdb.mapper.CmdbModelMapper.selectGroupModelList

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

问题排查

网上查看,大多数原因为:

1.mapper.xml中的namespace和实际的mapper文件不一致
2.mapper接口中的方法名和mapper.xml中的id标签不一致
3.上两步的问题都没有,但是还是不行,可能原因就是,没有构建进去,打开target看看对应的mapper.xml文件在不在
4、如果全部检查了一遍,还发现没有问题,最好看下自己的配置文件,那时候很有可能是配置少了扫描mapper的东西

按照以上步骤都检查过了,并没有问题。

问题解决

最终发现是复制文件过程出现了问题。

众所周知,现在建立xml文件一定是在resources文件下建立一个和接口所在包相同名称的文件夹。所以,当其他地方都没有问题的时候,你就要考虑一下自己resources下的mapper文件夹如果像我一样是
嵌套的
!!那你在建立的时候如果不是一个一个文件夹的建立,而是想直接建一个多层嵌套的文件夹,就会建成一个名为"com.tim.mapper"的单个文件夹,然后一定会报我这个错误。即使这两种方法建立的文件夹结果是一样的形式!

因为文件夹建立方式导致出这样的问题,很不容易被察觉。改好文件夹命名后,重启问题解决了。
解决连接:mybatis创建项目报Invalid bound statement (not found)错误解决方法