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

博客围绕MyBatis中Invalid bound statement (not found)问题展开。该问题实质是mapper接口和mapper.xml文件未映射。排查了namespace、方法名、文件构建及配置文件扫描等常见原因,最终发现是resources下mapper文件夹嵌套建立方式有误,修改命名重启后问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)错误解决方法

Invalid bound statement (not found)错误通常由以下几个原因引起: 1. mapper方法名和mapper.xml中的id标签不对应。这意味着在mapper接口中定义的方法名与mapper.xml文件中的对应id标签不一致。解决方法是确保这两者的名称是一致的。 2. XML文件的namespace不正确。namespace是指mapper.xml文件的命名空间,它应该与对应的接口完全一致。如果namespace不正确,会导致无法正确找到对应的mapper方法。解决方法是确保namespace与接口的全限定名一致。 3. XxxMapper.java的方法在XxxMapper.xml中没有定义。如果在接口中定义了一个方法,但在对应的mapper.xml文件中没有相应的定义,就会触发该错误。解决方法是在mapper.xml中添加对应的sql语句。 4. XxxMapper.java的方法返回值是List,但没有正确配置ResultMap或只配置了ResultType。如果mapper接口中的方法返回值是List类型,需要确保在mapper.xml文件中正确配置了对应的ResultMap或ResultType。解决方法是检查mapper.xml文件中的ResultMap或ResultType的配置是否正确。 5. XxxMapper.java文件和XxxMapper.xml文件没有在同一个文件夹下。这种情况下,MyBatis无法正确加载mapper.xml文件,从而导致该错误。解决方法是将XxxMapper.java文件和XxxMapper.xml文件放置在同一个文件夹下。 综上所述,要解决Invalid bound statement (not found)错误,你可以按照以下步骤进行操作: - 确保mapper方法名和mapper.xml中的id标签一致; - 检查XML文件的namespace是否正确; - 确保XxxMapper.java的方法在XxxMapper.xml中有相应的定义; - 如果mapper接口方法返回值是List类型,确保正确配置了ResultMap或ResultType; - 将XxxMapper.java文件和XxxMapper.xml文件放置在同一个文件夹下。 通过以上步骤,你应该能够解决Invalid bound statement (not found)错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值