问题描述:
在使用mybatis-plus过程中,新写的接口无法使用,检查了好几遍,mapper.xml没有问题,mapper接口也没问题,sql语句和.xml文件中的格式各种都没问题,但是测试就是报错。 报错结果如下:2021-09-11 07:49:00.705 ERROR 20934 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxx.UmsMemberMapper.findTotal] with root cause
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxx.UmsMemberMapper.findTotal
at com.baomidou.mybatisplus.core.override.PageMapperMethod$SqlCommand.<init>(PageMapperMethod.java:261) ~[mybatis-plus-core-3.0.5.jar:na]
at com.baomidou.mybatisplus.core.override.PageMapperMethod.<init>(PageMapperMethod.java:58) ~[mybatis-plus-core-3.0.5.jar:na]
at com.baomidou.mybatisplus.core.override.PageMapperProxy.cachedMapperMethod(PageMapperProxy.java:70) ~[mybatis-plus-core-3.0.5.jar:na]
at com.baomidou.mybatisplus.core.override.PageMapperProxy.invoke(PageMapperProxy.java:63) ~[mybatis-plus-core-3.0.5.jar:na]
at com.sun.proxy.$Proxy70.findTotal(Unknown Source) ~[na:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_292]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_292]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_292]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_292]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.2.jar:5.3.2]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.2.jar:5.3.2]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.2.jar:5.3.2]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)
原因分析:
结合网上和自己的理解做出以下总结:- 检查mybatis.xml文件namespace名称是否和Mapper接口的全限定名是否一致
- 检查Mapper接口的方法在mybatis.xml中的每个语句的id是否一致
- 检查Mapper接口方法返回值是否匹配select元素配置的ResultMap,或者只配置ResultType
- 检查yml文件中的mapper的XML配置路径是否正确
- 如果你还认为Mybatis中接口与映射文件一定要同名且放在同一个包下
这里遇到的问题就是mapper.xml文件修改后,并未更新到target中,所以一直导致无法初始化和mapper接口中对应的crud方法,
在run和debug的时候并未像类文件一样把.xml文件更新到target中。
我在尝试把target清除后重新run就好了。