org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题,即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。
1.xml的namespace必须是mapper所在的包名
2.mapper中方法的名称和xml中sql语句不一致,找不到指定的sql
3.xml中sql的返回值类型没有配置为resultMap
前三个为大部分情况下原因,下来是一些实际情况下我的解决方法,仅供参考:
1. mybatis的配置问题。
接收某个模块的开发后,模块在其他同事的PC完美运行,在我这里所有接口都是找不到mapper,经检查是配置文件出现错误,原配置(其余相关配置略,仅提供mybatis扫描配置):
mybatis:
mapper-locations:
- classpath:mapper/*.xml
修改后:
mapper-locations: classpath*:mapper/**/*.xml # mybatis对应的xml文件路径
修改完成,问题消失。
2.未加载问题
有些情况是一些不可描述原因 ,在xml文件中增加一个空格,再删除,或者是清理整个项目以后再运行,即可解决问题。
寻找问题发生原因的思路:
1.先确定问题范围:是该接口 还是该类下面所有接口,还是整个模块下所有接口,问题小多为映射问题,问题大多为整体配置问题。
2.确定问题原因:是具体发生在哪部分,如这个问题就是发生在mybatis上,所以解决方案需要从mybatis整体的配置到运行上入手。
3.多对比:如果找不到原因,跟类似的多对比。类似的项目,类似的模块。。。。。