IDEA异常解决: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

有时候解决问题不仅仅是解决问题。-----jstarseven

最近因为开发需要,需要搭建一个ssm开发框架,采用了开发工具IDEA。

整合完了SSM开发框架之后,发布的时候出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found。。。

一开始以为是自己配置文件写的有问题找了半天也没有问题,之后才发现是自己对IDEA工具使用的不够熟悉。

先说该异常常见解决方案:

一般是xml映射文件有错误。但是这个提示不一定准确,以致网上有些资料说这个问题很奇怪。出现这个错误一般的解决方式在下面有说明:

一般的原因是Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上,需要比较细致的对比。

按以下步骤一一执行:

1:检查xml文件所在的package名称是否和interface对应的package名称一一对应

2:检查xml文件的namespace是否和xml文件的package名称一一对应

3:检查函数名称能否对应上

4:去掉xml文件中的中文注释

5:随意在xml文件中加一个空格或者空行然后保存(触发了ide的自动编译功能。由于xml文件在编译的时候,不一定总能立即从源目录复制到class文件的编译目录(MyEclipse经常出这个问题),有时候你源目录中的xml文件已经修改好了,而class所在的目录里面还是旧的。因此真正确定有效的方式是将正确的xml文件复制到class输出目录。)

(博主使用IDEA工具)

但是博主在尝试以上方案之后仍然报错,在我查看了发布之后的源代码之后,发现*Mapper.xml文件并没有发布到目标文件中。

如图所示:

Mapper目录:

发布之后target目录中:

居然没有xml文件,突然意识到了异常的原因:

idea中我将mapper类型是source,而xml文件在发布时不会编译,同时也不会发布到target中,导致项目运行时找不到mapper.xml文件。

解决方案:我将*Mapper.xml文件提取到指定文件夹mapper中,设置mapper文件夹类型为resource,在application-dao.xml配置文件中添加图片中框选的代码对mapper文件进行扫描。问题解决。

总结:

(1)eclipse、myeclipse、idea针对项目的文件处理方式不一样。

eclipse和myeclipse中mapper.java和mapper.xml在同一目录下,直接配置扫描不会出现上述问题。

(2)注意xml文件的准确性。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中,当出现"org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)"异常时,通常是因为MyBatis无法找到对应的SQL语句映射。这个异常通常发生在以下几种情况下: 1. SQL语句映射错误:检查你的Mapper XML文件或注解中的SQL语句映射是否正确。确保SQL语句的id与Mapper接口中的方法名一致,并且Mapper接口的包路径与Mapper XML文件的namespace一致。 2. Mapper接口未被扫描到:确保你的Mapper接口被正确扫描到,并且被MyBatis正确管理。可以通过在启动类上添加`@MapperScan`注解来指定Mapper接口的扫描路径。 3. Mapper接口方法名错误:检查你的Mapper接口方法名是否与Mapper XML文件或注解中的SQL语句id一致。确保方法名的大小写和参数个数类型都匹配。 4. Mapper接口方法参数错误:检查你的Mapper接口方法参数是否与Mapper XML文件或注解中的SQL语句参数一致。确保参数个数、类型和顺序都匹配。 以下是一个示例,演示了如何解决"org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)"异常: ```java // NewsDetailMapper.java @Mapper public interface NewsDetailMapper { List<NewsDetail> selectByExample(NewsDetailExample example); } // NewsDetailMapper.xml <mapper namespace="com.team.news.mapper.NewsDetailMapper"> <select id="selectByExample" resultType="com.team.news.model.NewsDetail"> SELECT * FROM news_detail WHERE ... </select> </mapper> ``` 请注意,上述示例中的`NewsDetailExample`是一个自动生成的Example类,用于构建查询条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值