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