開發者學堂課程【MyBatis持久層架構入門:配置檔案解析 】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/21/detail/443配置檔案解析
内容簡介:
一、Mybatis 基礎
二、基本的 crud 操作
三、配置檔案解析以及配置優化
MyBatis 本是 apache 一個開源項目 iBatis ,2010年,這個項目由 apache software foundation 遷移到了 Google code ,并且改名為 MyBatis。
2013年11月遷移到 Github。iBATIS 一詞來源于 internet 和 abati s組合,是一個基于 java 的持久層架構, Ibatis 提供的持久層架構包括 SQL Maps 和 Data Access Object。
持久層指的是完成持久化工作的代碼。Mybetis 是基于 java 的持久層架構。Mybetis 就是幫助程式員将資料存入資料庫中,從資料庫中取出資料。
完成持久層代碼塊的就是 dao , Mybati 就是幫助程式員将資料存入到資料庫中和從資料庫中取出資料。
1.搭建 mybatis 架構
a.導入相關 ja r包
b.編寫核心配置檔案。配置資料庫連接配接的相關資訊以及配置了 Mapper 映射檔案,所謂的映射檔案,就是查詢了資料庫sql語句的映射。
c.編寫 mapper 映射檔案
d.編寫實體類
c.編寫 dao 進行測試
d.編寫 mapper 映射檔案
e.編寫實體類
2.Crud實作内容
Mybatis cfg xml
User mapper xml檔案
User java
調用 dao 進行測試
三、配置檔案解析以及配置優化
1.mybatis cfg.cxml
通過這個檔案獲得一個 sql session factory,本身來說就是一個核心配置檔案,所有操作都是從 factory 中出發。
Configuration 是根标簽,指的配置資訊,在其中有較多操作。Environments 指的是 mybatis 可以配置多個環境,Default 指向預設的環境,也就是模式。
模式和環境可以配置很多個,每個環境都能建立對應的 Sqlsessionfactory 。
首先讀取配置檔案,通過 builder 建立對象,調用的是檔案,就會出現預設的Environments 和 properties。
檢視構造方法在 configuration 裡面,jdbc 等會全部被加載進來。
每一個 sql session factory 對應一個環境 environment,Id 是唯一的。存在一個事務管理,事務管理分為兩種,一種是 jdbc,一種是 managed。
Jdbc 指的就是 gdbc 的事物,Managed 就是自己管理的事務,也就是自己管理事務的操作。
Jdbc 這個配置直接使用 jdbc 的送出和復原功能,它依賴于從資料源獲得連接配接來管理事務的生命周期,Managed 這個配置基本上什麼都不做,他從不送出或復原一個連接配接的失誤,而是讓容器來管理事務的生命周期,預設情況下它會關閉連接配接,但是一些容器并不會如此,是以如果您通過關閉連接配接來停止事物,将屬性 close connection 設定為 false。
pooled 指的是連接配接詞,Data source 元素使用标準的 gdpc 資料源接口來配制 jdbc 連接配接對象元。
大部分 my bet is 應用,都像上面例子那樣,配置一個資料源,但這不是必需的,需要認清的是,隻有使用了延遲加載,才需要資料源。
My bet is 内置了三種資料源類型。此操作就是之前做 jdbc 的操作。
對于 java 來說,不能直接鑒别行連接配接,是以每次打開關閉的操作是很費時間的。形象關系如下

每次關閉連接配接耗費時間且浪費資源,需要通過系統資源來連接配接,并且建立連接配接,伺服器這一塊并不是馬上建立。
如果有其他應用需要建立連接配接,就需要排隊。如果一個伺服器隻支援線上人數1000人,但如果因特殊情況,連接配接的人數增加,伺服器支撐不了超過1000人數,伺服器會很慢,就會崩。
是以這種操作十分不安全。連接配接的越多,消耗的資源越大,解決方法就是重新開機,重新開機對于一個正在運作的伺服器,這是緻命的操作。是以現在可以建立一個池子,提前和資料庫建立好許多連接配接,當有一個使用者需要連接配接,先找池子,直接連接配接池子後,可以直接連接配接伺服器就使用,不需要自己再建立檔案。
建立連接配接和連接配接資源的時間縮短。
當超過最大連接配接數,就開始排隊,但超過連接配接之後的人不是不能通路,但至少可以滿足有1000人可以通路連接配接,雖然支援1000人,但遠遠不止于1000人。
因為連好之後,另外一些人可以取得資料,下一次需要時直接取就可以。時間相對較短,不是無限取連接配接。是以很少采用 unpooled 這種方法。
Pooled 這個資料源的實作緩存了 jdbc 連接配接對象,用于避免每次建立新的資料庫連接配接時都初始化和進行認證,加快程式響應,并發 web 應用通常通過這種做法來快速獲得響應。
另外除了上面 unpooled 的屬性外,對于普利的資料源還有很多屬性可以設定。例如相應的連接配接數字,等待時間等等。
Jndi 這個資料源的配置是為了準備與向 spring 或應用伺服器能夠在外部或者内部配置資料源的容器一起使用,然後再 gndi 上下文中引用它,這個資料源隻需配置兩個屬性。
一個是 initial context,另外一個是 data source。也是采用資料源的形式去取得。
Mapper 指的就是現在,hyEatis 的行為屬性都已經在上面的配置元素中配置好了,接下來開始定義映射 SQL 語句。
但首先,我們需要告訴XyBatit在哪裡能夠找到我們定義的映射 SOL 語句。
在這方面,JAVA自動發現沒有提供好的方法,是以最好的方法是告訴劃 MyBatia 在哪裡能夠找到這些映射檔案。您可以使用類資源路徑或者 URL(包括file:///URLs)。
是以說 mapper 其實就是映射 sql 語句,映射的檔案可能會有多個,以上為關于mybatis 配置檔案相關的作用。
2.Mapper檔案
Namespace 的意思就是命名空間。Java 内的分包管理是為了防止命名重複,此處的命名空間也是為了防止Sql語句的id重複。
Namespace 命名對應實體類的包名加類名或是包名加 Mapper 檔案名。
Id 在該檔案中唯一,隻有唯一才能找到語句。查找使用者隻根據 id 去找。
Parametertype 指的是 Sql 語句參數類型。Resulttype 指的是傳回結果類型。
Use generatedkeys=''true'' 使用自增主鍵。