spring與mybatis整合配置MapperFactoryBean 與 MapperScannerConfigurer區別

來源:互聯網
上載者:User

標籤:區別   blank   mybatis   就會   技術分享   掃描   mil   檔案中   name   

MapperFactoryBean 與 MapperScannerConfigurer

Spring注入映射器

使用mybatis進行資料處理的四種方式

①SqlSessionTemplate②SqlSessionDaoSupport③MapperFactoryBean④MapperScannerConfigurer

①SqlSessionTemplate:這個需要寫設定檔,在實作類別中注入sqlsession,再使用sqlsession,是細顆粒控制(非介面開發)

②SqlSessionDaoSupport(存在與比較老的jar包中):這個只需要在實作類別中繼承特殊類(例如HibernateDaoSupport)

  就可以使用sqlsession(非介面方式開發)

③MapperFactoryBean:這個要寫設定檔,把對應的所有介面在設定檔中引用即可,無需寫實作類別,需要手動注入(動態代理開發)

④MapperScannerConfigurer:這個要寫設定檔,只要給出介面所在的包即可,會自動把包中的介面引入,

  無需寫實作類別,使用註解掃描的方式@Autowired(動態代理)

在SpringMVC中,你可以不必為每一個DAO都去寫相應的實現,而交給SpringMVC替你建立。

為了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 編寫Data Access Objects (DAO)的代碼,MyBatis-Spring 提供了一個動態代理的實現:MapperFactoryBean。這個類可以讓你直接注入資料對應器介面到你的 service 層 bean 中。當使用映射器時,你僅僅如調 用你的 DAO 一樣調用它們就可以了,但是你不需要編寫任何 DAO 實現的代碼,因為 MyBatis-Spring 將會為你建立代理。

MapperFactoryBean

資料對應器介面可以按照如下做法加入到 Spring 中:

MapperFactoryBean 建立的代理類實現了 UserMapper 介面,並且注入到應用程式中。 因為代理建立在運行時環境中(Runtime,譯者注) ,那麼指定的映射器必須是一個介面,而 不是一個具體的實作類別。

如果 UserMapper 有一個對應的 MyBatis 的 XML 映射器檔案, 如果 XML 檔案在類路徑的位置和映射器類相同時(即 .java 與 .xml 檔案在同一個包下), 它會被 MapperFactoryBean 自動解析。沒有必要在 MyBatis 設定檔中去指 定映射器 , 除非映射器的 XML 檔案在不同的類路徑下 。

注意,當 MapperFactoryBean 需要 SqlSessionFactory 或 SqlSessionTemplate 時。這些可以通過各自的 SqlSessionFactory 或 SqlSessionTemplate 屬性來設定, 或者可以由 Spring 來自動裝配。如果兩個屬性都設定了,那麼 SqlSessionFactory 就會被忽略,因為 SqlSessionTemplate 是需要有一個 session 工廠的設定; 那個工廠會由 MapperFactoryBean 來使用。

你可以直接在 business/service 對象中以和注入任意 Spring bean 的相同方式直接注入映射器:

這個 bean 可以直接在應用程式邏輯中使用:

注意在這段代碼中沒有 SqlSession 或 MyBatis 的引用。也沒有任何需要建立,開啟或關閉 session 的代碼, MyBatis-Spring 會來關心它的。

MapperScannerConfigurer

沒有必要在 Spring 的 XML 設定檔中註冊所有的映射器。相反,可以使用一個 MapperScannerConfigurer , 它 將 會 查 找 類 路 徑 下 的 映 射 器 並 自 動 將 它 們 創 建 成 MapperFactoryBean。

要建立 MapperScannerConfigurer,可以在 Spring 的配置中添加如下代碼:



basePackage 屬性是讓你為映射器介面檔案設定基本的包路徑。 你可以使用分號或逗號 作為分隔字元設定多於一

個的包路徑。每個映射器將會在指定的包路徑中遞迴地被搜尋到。

總結:
MapperFactoryBean 需要一個一個的配

MapperScannerConfigurer 可以配置多個

spring與mybatis整合配置MapperFactoryBean 與 MapperScannerConfigurer區別

相關文章

聯繫我們

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