框架报错:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): xxxxxx
出现这种错误的原因,一般是因为通过mapper接口无法找到与之绑定的xml文件。问题一般是出在xml文件上。
网上针对这个问题的解决办法基本上是围绕:
- 接口名与xml文件名是否一致。
- 是否完整编译。
- 重要排查点:maven的build扫描(打包后包内或本地运行target目录下是否含有xml文件);非resources下的xml文件,Maven打包eclipose会打入,但是idea并不会。
- xml<mapper>标签中的namespace属性值是否指定的是正确的接口。
- xml方法中parameterType没有使用权限定类名的话,看是否指定有效的typeAliasesPackage包别名。
但是我遇到的情况,问题出在这里:
mybatis-plus:
# mapper-locations: classpath:mapper/**/*Mapper.xml
mapper-locations: classpath*:mapper/**/*Mapper.xml
注意:看配置扫描xml文件路径的两种形式,一种是classpath不带有*号,一种是带有*号,也不难理解。经过测试,带有*号的形式,会把项目引入的依赖包中的xml文件扫描到。不带*号的形式,只会扫描到当前项目下的xml文件,依赖jar包中的xml文件并不会扫描到。
依赖中的xml文件存放路径要与项目保持一致,或逗号分割配置多个路径。