MyBatis不能加载XML语句

0

最近有个项目需要每个不同模块连接不同数据库,所以配置了不同数据源,然后发现Mapper不能绑定XML语句,提示错误:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.acgist.mapper.UserMapper.find
	at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:235)
	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.<init>(MybatisMapperMethod.java:50)
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.lambda$cachedInvoker$0(MybatisMapperProxy.java:111)
	at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
	at com.baomidou.mybatisplus.core.toolkit.CollectionUtils.computeIfAbsent(CollectionUtils.java:117)
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.cachedInvoker(MybatisMapperProxy.java:98)
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
	at com.sun.proxy.$Proxy196.count(Unknown Source)

这里有一点需要注意,就是扫描XML时,如果XML打包到jar里面,需要配置扫描:

mapper-locations: classpath*:/mybatis/dao/mapper/**/*.xml

注意是classpath*:而不是classpath:,这里多了个星表示需要扫描jar包里面的文件。

当然还有其他错误,比较常见的就是扫描路径配置错误。
还有如果不是使用的MyBatis,而是使用MyBatisPlus,那么配置应该是以mybatis-plus开头,如果使用mybatis开头也会导致这个异常。