解決使用intellij idea開發MAVEN項目在target目錄下不存在mapper.xml檔案

來源:互聯網
上載者:User

標籤:property   dwr   著作權   executor   comm   聲明   ext   config   mapper   

原解決使用intellij idea開發MAVEN項目在target目錄下不存在mapper.xml檔案原文章連結:65448964

原本在Eclipse中好好的MAVEN項目,匯入intellij idea中,伺服器啟動正常,但在調用userMapper介面時,報以下異常:

 

[java] view plain copy 
  1. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.beauxie.wxj.dao.UserMapper.findUserByCondition  
  2.     at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:178)  
  3.     at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:38)  
  4.     at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:49)  
  5.     at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:42)  
  6.     at com.sun.proxy.$Proxy10.findUserByCondition(Unknown Source)  
  7.     at com.beauxie.wxj.service.impl.UserServiceImpl.validata(UserServiceImpl.java:61)  
  8.     at com.beauxie.wxj.service.impl.UserServiceImpl.validataUsername(UserServiceImpl.java:35)  
  9.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  10.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
  11.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  12.     at java.lang.reflect.Method.invoke(Method.java:606)  
  13.     at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)  
  14.     at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)  
  15.     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)  
  16.     at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)  
  17.     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)  
  18.     at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)  
  19.     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)  
  20.     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)  
  21.     at com.sun.proxy.$Proxy13.validataUsername(Unknown Source)  
  22.     at com.beauxie.wxj.controller.UserController.checkUsername(UserController.java:83)  
  23.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  24.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
  25.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  26.     at java.lang.reflect.Method.invoke(Method.java:606)  
  27.     at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)  
  28.     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)  
  29.     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)  
  30.     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)  
  31.     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)  
  32.     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)  
  33.     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)  
  34.     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)  
  35.     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)  
  36.     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)  
  37.     at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)  
  38.     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)  
  39.     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)  
  40.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)  
  41.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  
  42.     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)  
  43.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)  
  44.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  
  45.     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)  
  46.     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)  
  47.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)  
  48.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)  
  49.     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)  
  50.     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)  
  51.     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)  
  52.     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)  
  53.     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)  
  54.     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)  
  55.     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)  
  56.     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)  
  57.     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)  
  58.     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)  
  59.     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)  
  60.     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)  
  61.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)  
  62.     at java.lang.Thread.run(Thread.java:745)  
  63. Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.beauxie.wxj.dao.UserMapper.findUserByCondition  
  64.     at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:775)  
  65.     at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:615)  
  66.     at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:608)  
  67.     at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:176)  
  68.     ... 60 more  

“Invalid bound statement (not found):com.beauxie.wxj.dao.UserMapper.findUserByCondition ”,說明這個異常是在調用Mapper介面時發生的,看到這個異常時,首選想到的是配置可能出了問題,或者沒有加註解,但反覆檢查以後,發現配置啥的都沒問題,其中xml設定檔中,關於DAO層與Mapper檔案的映射配置如下:

 

 

[html] view plain copy 
  1. <!-- 自動掃描entity目錄, 省掉Configuration.xml裡的手工配置 -->  
  2.     <property name="mapperLocations" value="classpath:com/beauxie/**/mapping/*.xml" />  

設定檔沒有問題,因為在Eclipse中都是正常的,查看控制台輸出:

 

以上的資訊表示,伺服器正在搜尋檔案以此來匹配:“com/beauxie/**/mapping/*.xml”,但最後的結果卻是:

也就是說沒有匹配到!我***,最後靜下心來發現是在target目錄下對應的位置找不到這個檔案,然後去對應的目錄下發現其他的包都在(比如controller包),就是沒有mapper包(存放Mapper檔案的),這讓我很納悶。最後自己百度了一下,終於找到了原因:

對於MAVEN項目,Eclipse會自動把項目src\main\java\目錄下的設定檔(.xml)和資源檔(.properties)搬運到target目錄下,而intellij idea預設是不會幫我們做這件事的。

 

解決辦法:

在pom.xml檔案中加入以下配置:

對應代碼如下:

 

[html] view plain copy 
  1. <!--解決Intellij構建項目時,target/classes目錄下不存在mapper.xml檔案-->  
  2.        <resources>  
  3.            <resource>  
  4.                <directory>${basedir}/src/main/java</directory>  
  5.                <includes>  
  6.                    <include>**/*.xml</include>  
  7.                </includes>  
  8.            </resource>  
  9.        </resources>  

這段代碼的意思就是把src/main/java目錄下所有的xml檔案都包含進去,其中${basedir} 是MAVEN的內建變數,表示項目根目錄。

同樣,想包含其他什麼檔案,比如.properties檔案,再加一個<include>標籤類似的寫法即可。

 

做了以上工作以後,再把項目“Reimport”(右鍵選中項目->Maven->Reimport)一下,啟動伺服器,調用Mapper介面便不會報錯了,而且target目錄下對應的位置也有了mapper.xml檔案。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。65448964

解決使用intellij idea開發MAVEN項目在target目錄下不存在mapper.xml檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.