解决mybatis plus报错Invalid bound statement (not found):问题
目录
- myBATis plus报错Invalid bound statement (not found):
- 解决方案
- 还有以下几种方向进行分析问题
- 方法一
- 方法二
- 总结
mybatis plus报错Invalid bound statement (not found):
出现Invalid bound statement (not found) 异常
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.yk.yearmeet.modular.service.UserService.list
at com.baomidou.mybatisplus.core.override.PageMapperMethod$SqlCommand.<init>(PageMapperMethod.Java:261)
at com.baomidou.mybatisplus.core.override.PageMapperMethod.<init>(PageMapperM编程客栈ethod.java:58) at com.baomidou.mybatisplus.core.override.PageMapperProxy.cachedMapperMethod(PageMapperProxy.java:70) at com.baomidou.mybatisplus.core.override.PageMapperProxy.invoke(PageMapperProxy.java:63) at com.sun.proxy.$Proxy72.list(Unknown Source) at com.baomidou.mybatisplus.extension.service.IService.list(IService.java:279) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.baomidou.mybatisplus.core.override.PageMapperProxy.invokeDefaultMethod(PageMapperProxy.java:89) at com.baomidou.mybatisplus.core.override.PageMapperProxy.invoke(PageMapperProxy.java:58) at com.sun.proxy.$Proxy72.list(Unknown Source) at com.yk.yearmeet.oss.OssTest.serviceTest(OssTest.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.编程invokeExplosively(FramjavascripteworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaLuate(InvokeMethod.java:17)
上述日志详情。
解决方案
我是因为,在启动类和配置类都进行类MapperScaner的声明
保留一个配置就可以了,这俩配置冲突。
还有以下几种方向进行分析问题
检查是不是引入 jar 冲突
检查 Mapper.java 的扫描路径
方法一
在 Configuration 类上使用注解 MapperScan
@Configuration @MapperScan("com.yourpackage.*.mapper") public class YourConfigClass{ ... }
方法二
在Configuration类里面,配置MapperScannerConfigurer
@Bean public MapperScannerConfigurer mapperScannerCowww.devze.comnfigurer(){ MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer(); //可以通过环境变量获取你的mapper路径,这样mapper扫描可以通过配置文件配置了 scannerConfigurer.setBasePackage("com.yourpackage.*.mapper"); return s编程客栈cannerConfigurer; }
- 检查命名空间是否正常? 检查包扫描路径typeAliasesPackage是否正常?如果扫描不到,MP 无法进行预注入
- 检查是否指定了主键?如未指定,则会导致 selectById 相关 ID 无法操作,请用注解 @TableId 注解表 ID 主键。当然 @TableId 注解可以没有!但是你的主键必须叫 id(忽略大小写)
- SqlSessionFactory不要使用原生的,请使用MybatisSqlSessionFactory
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论