org.apache.ibatis.binding.BindingException 【异常原因汇总】

背景:Spring整合Mybatis

报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

解释:就是说,你的Mapper接口,被Spring注入后,却无法正常的使用mapper.xml的sql;

这里的Spring注入后的意思是,你的接口已经成功的被扫描到,但是当Spring尝试注入一个代理(MyBatista实现)的实现类后,却无法正常使用。这里的可能发生的情况有如下几种:

  1. mapper接口和mapper.xml是否在同一个包(package)下?名字是否一样(仅后缀不同)?
比如,接口名是NameMapper.java;对应的xml就应该是NameMapper.xml

2.mapper.xml的命名空间(namespace)是否跟mapper接口的包名一致?

比如,你接口的包名是com.abc.dao,接口名是NameMapper.java,
那么你的mapper.xml的namespace应该是com.abc.dao.NameMapper

3.接口的方法名,与xml中的一条sql标签的id一致

比如,接口的方法List findAll();那么,对应的xml里面一定有一条是

4.如果接口中的返回值List集合(不知道其他集合也是),那么xml里面的配置,尽量用resultMap(保证resultMap配置正确),不要用resultType

5.最后,如果你的项目是maven项目,请你在编译后,到接口所在目录看一看,很有可能是没有生产对应的xml文件,因为maven默认是不编译的,因此,你需要在你的pom.xml的里面,加这么一段:

        
            
                src/main/java
                
                    **/*.xml
                
                true
            
        

原博客地址

你可能感兴趣的:(org.apache.ibatis.binding.BindingException 【异常原因汇总】)