关于 eclipse 迁移到idea mybatis Xml出现 Invalid bound statement (not found) 的问题

Posted by Cchua on 2017-04-14

  搬了一台旧电脑到学校开发,应用一开多用eclipse真的卡的不行 于是想换一款开发软件,想起同学以前安利过idea,便开始给自己挖坑。

正文

  我的项目采用了Spring-Boot+Mybatis,为了提高开发效率采用了mybatis-generator的反向生成代码生成了Xml,测试的时候突然间发现报错,我用注解写的语句可以正常运行,可是Xml的代码均出现了一下错误

> 2017-04-14 10:28:44.632 ERROR 6300 --- [nio-3331-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is 
>  org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.cchuaspace.mapper.SuppliersCommodityMapper.insertSelective] with root cause
> org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.cchuaspace.mapper.SuppliersCommodityMapper.insertSelective at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:230) ~[mybatis-3.4.2.jar:3.4.2]

  以为是自己反向生成xml文件的namespace没有和xml文件的package名称一一对应,后来发现并不是这么一回事。 

于是便打开了垃圾Baidu,Dalao们的说法也是各种各样,xml没有编译进去、Mapper.xml文件并没有发布到目标文件中、把Mapper.xml文件夹放在resource文件夹下,什么在maven项目的pom.xml中build标签下插入路径,将src下所有xml文件引入编译;
  
但是这些方法都不管用。

解决

   第二天一早,我发现了是我MyBatis,并没有设置路径,原本在eclipse却读到了我所有的 *Mapper.xml (不知道什么原理……迷),于是我重新在把所有xml直接丢到resource,建了个mapper文件夹,在application添加bean,检查了在IDEA里面Project Structure -> Modules 的resource到底有没设置为Resource类型,重启项目,新的风暴已经出现。顺利读取xml。


世界上本没有坑,都是自己挖的!……