MyBatis入门(一) -- 简介
2019獨角獸企業重金招聘Python工程師標準>>>
MyBatis 提供了一種“半自動化”的 ORM 實現,是一種 "SQL Mapping" 框架。MyBatis 并不完全是一種 ORM 框架,它的設計思想和 ORM 相似,只是它允許直接編寫 SQL 語句,使得數據庫訪問更加靈活。
1、ORM
ORM(Object/Relational Mapping),即對象關系映射,它完成面向對象的編程語言到關系數據庫的映射。ORM 工具的唯一作用是:把持久化對象的保存、修改、刪除等操作,轉換成對數據庫的操作。
ORM 基本映射關系:
- 數據表映射類
- 數據表的行映射對象(實例)
- 數據表的列(字段)映射對象的屬性
2、MyBatis結構
2.1、功能架構
Mybatis的功能架構分為三層:
-
API接口層:提供給外部使用的接口 API,開發人員通過這些本地 API 來操縱數據庫。接口層一接收到調用請求就會調用數據處理層來完成具體的數據處理。
-
數據處理層:負責具體的 SQL 查找、SQL 解析、SQL 執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次數據庫操作。
-
基礎支撐層:負責最基礎的功能支撐,包括連接管理、事務管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件,為上層的數據處理層提供最基礎的支撐。
?2.2、框架架構
-
加載配置:MyBatis 應用程序根據XML配置文件加載運行環境,創建 SqlSessionFactory,SqlSessionFactory,配置來源于兩個地方,一處是配置文件,一處是 Java 代碼的注解,將 SQL 的配置信息加載成為一個個 MappedStatement 對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。
-
SQL 解析:當 API 接口層接收到調用請求時,會接收到傳入 SQL 的 ID 和傳入對象(可以是 Map、JavaBean 或者基本數據類型),Mybatis 會根據 SQL 的 ID 找到對應的 MappedStatement,然后根據傳入參數對象對 MappedStatement 進行解析,解析后可以得到最終要執行的 SQL 語句和參數。
-
SQL 執行:SqlSession 將最終得到的 SQL 和參數拿到數據庫進行執行,得到操作數據庫的結果。
-
結果映射:將操作數據庫的結果按照映射的配置進行轉換,可以轉換成 HashMap、JavaBean 或者基本數據類型,并將最終結果返回,用完之后關閉 SqlSession。
2.2.1、SqlSessionFactory和SqlSession
SqlSessionFactory 是創建 SqlSession 的工廠,SqlSessionFactory 的實例可以通過 SqlSessionFactoryBuilder 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置文件或一個預先定制的 Configuration 的實例構建出 SqlSessionFactory 的實例。
SqlSession 是執行持久化操作的對象,它完全包含了面向數據庫執行 SQL 命令所需的所有方法,可以通過 SqlSession 實例來直接執行已映射的 SQL 語句。在使用完 SqlSession 后我們應該使用 finally 塊來確保關閉它。
?
?
?
轉載于:https://my.oschina.net/pierrecai/blog/1512660
總結
以上是生活随笔為你收集整理的MyBatis入门(一) -- 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 风口更需冷静 智能家居如何跨越鸿沟?
- 下一篇: iOS使用shell脚本注入混淆内容