標籤:-name ibatis 註解 spring事務 操作 其它 color sql語句 資料類型
1、MyBatis 本是apache的一個
開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名為MyBatis 。2013年11月遷移到Github。iBATIS一詞來源於“internet”和“abatis”的組合,
是一個基於Java的持久層架構。iBATIS提供的
持久層架構包括
SQL Maps和Data Access Objects(DAOs)2、
1、
基本資料MyBatis 是
一款優秀的持久層架構,它支援
定製化 SQL、預存程序以及進階映射。MyBatis
避免了幾乎所有的 JDBC 代碼和手動設定參數以及擷取結果集。MyBatis 可以使用簡單的
XML 或註解來配置和映射原生資訊,將
介面和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java對象)
映射成資料庫中的記錄。
背景介紹MyBatis 是支援普通 SQL查詢,預存程序和進階映射的優秀持久層架構。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設定以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將介面和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java對象)映射成資料庫中的記錄。每個MyBatis
應用程式主要都是使用SqlSessionFactory執行個體的,一個SqlSessionFactory執行個體
可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder
可以從一個xml設定檔或者一個預定義的配置類的執行個體獲得。用xml檔案構建SqlSessionFactory執行個體是非常簡單的事情。推薦在這個配置中使用
類路徑資源(
classpath resource),但你可以使用
任何Reader執行個體,包括用
檔案路徑或file://開頭的url建立的執行個體。MyBatis有一個實用類----Resources,它有很多方法,可以方便地從類路徑及其它位置載入資源。
特點
- 簡單易學:本身就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar檔案+配置幾個sql映射檔案易於學習,便於使用,通過文檔和原始碼,可以比較完全的掌握它的設計思路和實現。
- 靈活:mybatis不會對應用程式或者資料庫的現有設計強加任何影響。 sql寫在xml裡,便於統一管理和最佳化。通過sql基本上可以實現我們不使用資料訪問架構可以實現的所有功能,或許更多。
- 解除sql與程式碼的耦合:通過提供DAO層,將商務邏輯和資料訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提高了可維護性。
- 提供映射標籤,支援對象與資料庫的orm欄位關係映射
- 提供對象關係映射標籤,支援對象關係組建維護
- 提供xml標籤,支援編寫動態sql。
總體流程
(1)載入配置並初始化觸發條件:
載入設定檔處理過程:將SQL的配置資訊載入成為一個個
MappedStatement對象(包括了
傳入參數映射配置、執行的SQL語句、結果映射配置),
儲存在記憶體中。(2)接收調用請求觸發條件:
調用Mybatis提供的API傳入參數:為SQL的ID和傳入參數對象處理過程:將請求傳遞給下層的請求處理層進行處理。(3)處理操作請求觸發條件:
API介面層傳遞請求過來傳入參數:為SQL的ID和傳入參數對象處理過程:(A)
根據SQL的ID尋找對應的MappedStatement對象。(B)根據傳入參數對象解析MappedStatement對象,得到最終要執行的SQL和執行傳入參數。(C)擷取資料庫連接,根據得到的最終SQL語句和執行傳入參數到資料庫執行,
並得到執行結果。(D)根據MappedStatement對象中的結果映射配置對得到的執行結果進行轉換處理,並得到最終的處理結果。(E)釋放串連資源。(4)返回處理結果將最終的處理結果返回。 功能架構我們把Mybatis的功能架構分為三層:(1)
API介面層:提供給外部使用的介面API,開發人員通過這些
本地API來操縱資料庫。介面層一接收到調用請求就會調用資料處理層來完成具體的資料處理。(2)
資料處理層:負責具體的
SQL尋找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次資料庫操作。(3)
基礎支撐層:負責最基礎的功能支撐,包括
串連管理、交易管理、配置載入和緩衝處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件。為上層的資料處理層提供最基礎的支撐。
架構架構架構架構講解:(1)載入配置:配置來源於
兩個地方,
一處是設定檔,一處是Java代碼的註解,將SQL的配置資訊載入成為一個個MappedStatement對象(包括了
傳入參數映射配置、執行的SQL語句、結果映射配置),儲存在記憶體中。(2)SQL解析:當API介面層接收到調用請求時,會接收到傳入SQL的ID和傳入對象(可以是
Map、JavaBean或者基礎資料型別 (Elementary Data Type)),Mybatis會
根據SQL的ID找到對應的MappedStatement,然後根據傳入參數對象對MappedStatement進行解析,解析後可以得到最終要執行的
SQL語句和參數。(3)SQL執行:將最終得到的SQL和參數拿到資料庫進行執行,
得到操作資料庫的結果。(4)結果映射:將操作資料庫的結果按照映射的配置進行轉換,可以轉換成
HashMap、JavaBean或者基礎資料型別 (Elementary Data Type),並將最終結果返回。
動態SQLMyBatis 最強大的特性之一就是它的
動態語句功能。如果您以前有使用JDBC或者類似架構的經曆,您就會明白把SQL語句條件串連在一起是多麼的痛苦,要確保不能忘記空格或者不要在columns列後面省略一個逗號等。動態語句能夠完全解決掉這些痛苦。儘管與動態SQL一起工作不是在開一個party,但是MyBatis確實能通過在任何映射SQL語句中使用強大的動態SQL來改進這些狀況。動態SQL元素對於任何使用過JSTL或者類似於XML之類的文本處理器的人來說,都是非常熟悉的。在上一版本中,需要瞭解和學習非常多的元素,但在MyBatis 3 中有了許多的改進,現在只剩下差不多二分之一的元素。
MyBatis使用了基於強大的OGNL運算式來消除了大部分元素。
整合單獨使用mybatis 是有很多限制的(比如無法實現跨越多個session的事務),而且很多業務系統本來就是使用spring來管理的事務,因此mybatis最好與spring整合起來使用 [4] 。spring事務配置
<!--自動掃描業務包--><context:component-scanbase-package="com.xxx.service"/><!--資料來源--><jee:jndi-lookupid="jndiDataSource"jndi-name="java:comp/env/jdbc/datasource"/><!--配置事務--><beanid="txManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><propertyname="dataSource"ref="jndiDataSource"/></bean><!--配置基於註解的事物aop--><tx:annotation-driventransaction-manager="txManager"proxy-target-class="true"/>
2、
0、 0.2、http://www.mybatis.org/mybatis-3/0.3、http://www.mybatis.org/mybatis-3/zh/index.html1、https://baike.baidu.com/item/MyBatis2、
|
ylbtech 出處:http://ylbtech.cnblogs.com/ 本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。 |
MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名為MyBatis 。2013年11月遷移到Github。iBATIS一詞來源於“internet”和“abatis”的組合,是一個基於Java的持久層架構。iBATIS提供的持久層架構套件括SQL Maps和Data Access Objects(DAOs)
雜項-Java:MyBatis