Mybatis中介面和對應的mapper檔案位置配置詳解

來源:互聯網
上載者:User

標籤:r檔案   xml配置   ant風格   實現   mave   maven工程   SQ   alt   string   

Mybatis中介面和對應的mapper檔案位置配置詳解原連結為:71480954

      今天遇到一個問題是mybatis中介面和對應的mapper檔案位置不同,而引起的操作也會不同,在網上找了好久最終找到了方法,這裡就簡單的解析一下:

       我們知道在典型的maven工程中,目錄結構有:src/main/java和src/main/resources,前者是用來存放java原始碼的,後者則是存放一些資源檔,比如設定檔等.   
      Mybatis中介面和對應的mapper檔案不一定要放在同一個包下,如果 放在一起的目的是為了Mybatis進行自動掃描,並且要注意此時Java介面的名稱和mapper檔案的名稱要相同,否則會報異常,由於此時Mybatis會自動解析對應的介面和相應的設定檔,所以就不需要配置mapper檔案的位置了。
1:介面和檔案放在同一個包中如下:
在預設的情況下maven打包的時候,對於src/main/java目錄只打包原始碼,而不會打包其他檔案。所以此時如果把對應的mapper檔案放到src/main/java目錄下時,不會打包到最終的jar檔案夾中,也不會輸出到target檔案夾中,由於在進行單元測試的時候執行的是/target目錄下/test-classes下的代碼,所以在測試的時候也不會成功。


  為了實現在maven預設環境下打包時,Mybatis的介面和mapper檔案在同一包中,可以通過將介面檔案放在src/main/java某個包中,而在src/main/resources目錄中建立同樣的包,這是一種約定優於配置的方式,這樣在maven打包的時候就會將src/main/java和src/main/resources相同包下的檔案合并到同一包中。

在預設maven打包的環境下,不要將介面檔案和mapper檔案全部放到src/main/java,這樣也不會把mapper檔案打包進去

 


 

src/main/javasrc/main/resources中相同的包名,相同的檔案名稱,預設打包後的結構如下:

發現打包之後已經到同一個包下了。

 

 

而當你把介面和mapper檔案全部放到src/main/java中同一包時,如下:

 

打包之後的檔案如下:

發現編譯打包之後並沒有mapper檔案,所以此時不管是測試還是正式執行都會出錯!!

 

更改maven構建配置

 

如果不想將介面和mapper檔案分別放到src/main/javasrc/main/resources中,而是全部放到src/main/java,那麼在構建的時候需要指定maven打包需要包括xml檔案,具體配置如下:

 

[java] view plain copy 
  1. <span style="font-size:14px;"><build>  
  2.     <resources>  
  3.         <resource>  
  4.             <directory>src/main/java</directory>  
  5.             <includes>  
  6.                 <include>**/*.xml</include>  
  7.             </includes>  
  8.             <filtering>false</filtering>  
  9.         </resource>  
  10.     </resources>  
  11. </build></span>  
這樣在打包的時候也會將mapper檔案打包到/target檔案夾中。

 

2:介面和檔案不在同一個包下

如果介面和mapper檔案不在同一個包下,就不能進行自動掃描解析了,需要對介面和檔案分別進行配置。
2.1 XML配置方式
2.1.1 不使用Spring
使用Mybatis的設定檔如下:

 

[java] view plain copy 
  1. <span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE configuration  
  3.   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  4.   "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  5. <configuration>  
  6.   <mappers>  
  7.     <!-- 掃描路徑下的mapper對應檔 -->  
  8.     <mapper resource="mappers/UserMapper.xml"/>  
  9.     <!-- 掃描包下的介面檔案 -->  
  10.     <package name="edu.zju.bme.data.manage.mapper" />  
  11.   </mappers>  
  12. </configuration></span>  
2.1.2 使用Spring
使用spring的設定檔如下:

 

 

[java] view plain copy 
  1. <span style="font-size:14px;"><beans xmlns="http://www.springframework.org/schema/beans"  
  2.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.   xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"  
  4.   xsi:schemaLocation="  
  5.   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  6.   http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">  
  7.   <!-- 配置介面儲存的包,用來掃描mapper介面 -->  
  8.   <mybatis:scan base-package="edu.zju.bme.data.manage.mapper" />  
  9.   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  10.     <!-- 配置mapper檔案位置,掃描對應檔,可以使用Ant風格的路徑格式 -->  
  11.     <property name="mapperLocations" value="classpath*:mappers/**/*.xml" />  
  12.     // ...  
  13.   </bean>  
  14. </beans></span>  

Mybatis中介面和對應的mapper檔案位置配置詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.