• HTTP Status 500


            在使用Maven工程管理工具整合SSM框架时,Mybatis使用逆向工程生成的pojo,mapper接口及映射文件,把mapper接口和映射文件放在DAO工程的同一级src/main/java目录下。正常启动服务器,浏览器执行业务Console控制台抛出异常:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)。

    一、异常描述:

      1 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
      2 cn.e3mall.mapper.TbItemMapper.selectByExample
      3 	at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:189)
      4 	at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:43)
      5 	at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:58)
      6 	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:51)
      7 	at com.sun.proxy.$Proxy31.selectByExample(Unknown Source)
      8 	at cn.e3mall.service.impl.ItemServiceImpl.getItemById(ItemServiceImpl.java:34)
      9 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     10 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     11 	at sun.reflect.DelegatingMethodAccessorImpl.invoke
     12 (DelegatingMethodAccessorImpl.java:43)
     13 	at java.lang.reflect.Method.invoke(Method.java:498)
     14 	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection
     15 (AopUtils.java:302)
     16 	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint
     17 (ReflectiveMethodInvocation.java:190)
     18 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
     19 (ReflectiveMethodInvocation.java:157)
     20 	at org.springframework.transaction.interceptor.
     21 TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
     22 	at org.springframework.transaction.interceptor.TransactionAspectSupport.
     23 invokeWithinTransaction(TransactionAspectSupport.java:281)
     24 	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke
     25 (TransactionInterceptor.java:96)
     26 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
     27 (ReflectiveMethodInvocation.java:179)
     28 	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke
     29 (ExposeInvocationInterceptor.java:92)
     30 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
     31 (ReflectiveMethodInvocation.java:179)
     32 	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke
     33 (JdkDynamicAopProxy.java:208)
     34 	at com.sun.proxy.$Proxy34.getItemById(Unknown Source)
     35 	at cn.e3mall.controller.ItemController.getItemById(ItemController.java:27)
     36 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     37 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     38 	at sun.reflect.DelegatingMethodAccessorImpl.invoke
     39 (DelegatingMethodAccessorImpl.java:43)
     40 	at java.lang.reflect.Method.invoke(Method.java:498)
     41 	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke
     42 (InvocableHandlerMethod.java:222)
     43 	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest
     44 (InvocableHandlerMethod.java:137)
     45 	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.
     46 invokeAndHandle(ServletInvocableHandlerMethod.java:110)
     47 	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.
     48 invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
     49 	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.
     50 handleInternal(RequestMappingHandlerAdapter.java:737)
     51 	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle
     52 (AbstractHandlerMethodAdapter.java:85)
     53 	at org.springframework.web.servlet.DispatcherServlet.doDispatch
     54 (DispatcherServlet.java:959)
     55 	at org.springframework.web.servlet.DispatcherServlet.doService
     56 (DispatcherServlet.java:893)
     57 	at org.springframework.web.servlet.FrameworkServlet.processRequest
     58 (FrameworkServlet.java:969)
     59 	at org.springframework.web.servlet.FrameworkServlet.doGet
     60 (FrameworkServlet.java:860)
     61 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
     62 	at org.springframework.web.servlet.FrameworkServlet.service
     63 (FrameworkServlet.java:845)
     64 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
     65 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
     66 (ApplicationFilterChain.java:305)
     67 	at org.apache.catalina.core.ApplicationFilterChain.doFilter
     68 (ApplicationFilterChain.java:210)
     69 	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
     70 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
     71 (ApplicationFilterChain.java:243)
     72 	at org.apache.catalina.core.ApplicationFilterChain.doFilter
     73 (ApplicationFilterChain.java:210)
     74 	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal
     75 (CharacterEncodingFilter.java:121)
     76 	at org.springframework.web.filter.OncePerRequestFilter.doFilter
     77 (OncePerRequestFilter.java:107)
     78 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
     79 (ApplicationFilterChain.java:243)
     80 	at org.apache.catalina.core.ApplicationFilterChain.doFilter
     81 (ApplicationFilterChain.java:210)
     82 	at org.apache.catalina.core.StandardWrapperValve.invoke
     83 (StandardWrapperValve.java:222)
     84 	at org.apache.catalina.core.StandardContextValve.invoke
     85 (StandardContextValve.java:123)
     86 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke
     87 (AuthenticatorBase.java:502)
     88 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
     89 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
     90 	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
     91 	at org.apache.catalina.core.StandardEngineValve.invoke
     92 (StandardEngineValve.java:118)
     93 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
     94 	at org.apache.coyote.http11.AbstractHttp11Processor.process
     95 (AbstractHttp11Processor.java:1041)
     96 	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process
     97 (AbstractProtocol.java:603)
     98 	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
     99 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    100 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    101 	at java.lang.Thread.run(Thread.java:748)

    二、错误分析:

           此异常的原因是由于mapper接口编译后在同一个目录下没有找到mapper映射文件而出现的。由于maven工程在默认情况下src/main/java目录下的mapper文件是不发布到target目录下的。

    三、解决办法:

    方法1:将Mapper映射文件放到src/main/resources目录下,然后再建一个和mapper接口所在的包名一样的包。

    方法2:在此工程pom文件中配置一下resources。

      1 <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
      2 <build>
      3 	<resources>
      4           <resource>
      5                <directory>src/main/java</directory>
      6                <includes>
      7                    <include>**/*.properties</include>
      8                    <include>**/*.xml</include>
      9                </includes>
     10                <filtering>false</filtering>
     11           </resource>
     12      </resources>
     13 </build>

    四、注意事项:

           原配置文件默认放在src/main/resources目录下,这样配置了之后,就指定src/main/java它是资源目录,src/main/resources目录就会不起作用了。如果不想这样,需要在配置中再加上一个resource节点,把src/main/resources目录也添加进来,即:

      1 <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
      2 <build>
      3 	<resources>
      4             <resource>
      5                 <directory>src/main/java</directory>
      6                 <includes>
      7                     <include>**/*.properties</include>
      8                     <include>**/*.xml</include>
      9                 </includes>
     10                 <filtering>false</filtering>
     11             </resource>
     12             <resource>
     13                 <directory>src/main/resources</directory>
     14                 <includes>
     15                     <include>**/*.properties</include>
     16                     <include>**/*.xml</include>
     17                 </includes>
     18                 <filtering>false</filtering>
     19             </resource>
     20         </resources>
     21 </build>
  • 相关阅读:
    2018年你需要知道的13个JavaScript工具库
    JavaScript一团乱,这是好事
    5大JavaScript前端框架简介
    大型Vuex应用程序的目录结构
    Github被微软收购,这里整理了16个替代品
    如何使用@vue/cli 3.0在npm上创建,发布和使用你自己的Vue.js组件库
    TensorFlow入门教程
    想成为顶级开发者吗?亲自动手实现经典案例
    2018年最值得关注的30个Vue开源项目
    SQL Server 合并复制遇到identity range check报错的解决 (转载)
  • 原文地址:https://www.cnblogs.com/justlove/p/7246064.html
Copyright © 2020-2023  润新知