Invalid bound statement (not found):
异常信息
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
五月 04, 2019 258 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [spring] in context with path [/MsProject] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.yaosiyuan.dao.MsUserMapper.insert] with root cause
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.yaosiyuan.dao.MsUserMapper.insert
at org.apache.ibatis.binding.MapperMethod S q l C o m m a n d . < i n i t > ( M a p p e r M e t h o d . j a v a : 223 ) a t o r g . a p a c h e . i b a t i s . b i n d i n g . M a p p e r M e t h o d . < i n i t > ( M a p p e r M e t h o d . j a v a : 48 ) a t o r g . a p a c h e . i b a t i s . b i n d i n g . M a p p e r P r o x y . c a c h e d M a p p e r M e t h o d ( M a p p e r P r o x y . j a v a : 59 ) a t o r g . a p a c h e . i b a t i s . b i n d i n g . M a p p e r P r o x y . i n v o k e ( M a p p e r P r o x y . j a v a : 52 ) a t c o m . s u n . p r o x y . SqlCommand.
at com.yaosiyuan.service.MsUserService.insert(MsUserService.java:38)
at com.yaosiyuan.action.MsUserAction.add(MsUserAction.java:28)
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.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:178)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:442)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:430)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol A b s t r a c t C o n n e c t i o n H a n d l e r . p r o c e s s ( A b s t r a c t P r o t o c o l . j a v a : 607 ) a t o r g . a p a c h e . t o m c a t . u t i l . n e t . J I o E n d p o i n t AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint AbstractConnectionHandler.process(AbstractProtocol.java:607)atorg.apache.tomcat.util.net.JIoEndpointSocketProcessor.run(JIoEndpoint.java:313)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
场景描述
异常原因
包名/域名空间/返回类型/xml丢失/文件异常
解决方案
1.检查xml文件所在package名称是否和Mapper interface所在的包名
2、mapper的namespace写的不对!!!注意系修改。
3、UserDao的方法在UserDao.xml中没有,然后执行UserDao的方法会报此
4、UserDao的方法返回值是List,而select元素没有正确配置ResultMap,或者只配置ResultType!
5、看下mapper的XML配置路径是否正确、或者out/war文件夾是否包含xml文件。
如果不包含,就是因为maven没打包,忽略掉xml了。请在pom的build中加入以下。
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
6/检查application.properties配置文件是否添加以下配置信息(我就是因为这个原因导致报错的,添加之后问题解决):
mybatis.mapperLocations=classpath:mapper/*Mapper.xml
mybatis.typeAliasesPackage=com.gugr.springboot.entity
<!-- spring和MyBatis完美整合 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 指定数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 具体指定xml文件,可不配 -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!-- 自动扫描mapping.xml文件,**表示迭代查找 ,,也可在mybatis-config.xml中单独指定xml文件 -->
<!-- <property name="mapperLocations" value="classpath:com/yaosiyuan/dao/xml/MsMerchantMapper.xml"/>
--> <property name="mapperLocations">
<array>
<value>classpath:com/yaosiyuan/dao/xml/MsMerchantMapper.xml</value>
<value>classpath:com/yaosiyuan/dao/xml/MsMerchantMapper.xml</value>
<!-- <value>classpath:mybatis/mapper/database/*.xml</value> -->
</array>
</property>
</bean>
6/配置xml映射文件需要满足特定要求
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref="dataSource" p:configLocation="classpath:mybatis-config.xml">
<property name="mapperLocations">
<list>
<value>classpath*:mapper/com/xxx/**/*Mapper.xml</value>
<value>classpath*:dao/com/xxx/**/*Mapper.xml</value>
</list>
</property>
</bean>
如上只有Mapper结尾的xml文件才会被Mybatis扫描到,这个时候如果忘记了这个规则,xml使用了其他名称,如xxxDao.xml。这样xml的配置就不会加入到Mybatis存储配置的一个map对象里去,也会出现 Invalid bound statement 的错误。解决方法就是把xml文件改名即可。
7、如果你确认没有以上问题,请任意修改下对应的xml文件,比如删除一个空行,保存,或者新建一个文件,确认编码格式,dtd无误后,复制粘贴。
推荐阅读
>>清欢的博客
>>学习交流或获取更多资料欢迎加入QQ群:874514813➤TG群
还没有评论,来说两句吧...