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
开头也会导致这个异常。