Mybatis原理理解

前言

MyBatis是一個簡單,小巧但功能非常強大的ORM開源框架,它的功能強大也體現在它的緩存機制上。MyBatis提供了一級緩存、二級緩存 這兩個緩存機制,能夠很好地處理和維護緩存,以提高系統的性能。本文主要講述MyBatis的架構設計思路,並且討論MyBatis的幾個核心部件以及它們之間的關係。

一、Myabtis框架設計

在這裏插入圖片描述
1.接口層—和數據庫交互的方式

MyBatis和數據庫的交互有兩種方式:
a.使用傳統的MyBatis提供的API;
b. 使用Mapper接口

2.數據處理層

數據處理層可以說是MyBatis 的核心,從大的方面上講,它要完成二個功能:
a. 通過傳入參數構建動態SQL語句;
b. SQL語句的執行以及封裝查詢結果集成List

3. 框架支撐層

3.1. 事務管理機制
事務管理機制對於ORM框架而言是不可缺少的一部分,事務管理機制的質量也是考量一個ORM框架是否優秀的一個標準。
3.2. 連接池管理機制
由於創建一個數據庫連接所佔用的資源比較大, 對於數據吞吐量大和訪問量非常大的應用而言,連接池的設計就顯得非常重要。
3.3. 緩存機制
爲了提高數據利用率和減小服務器和數據庫的壓力,MyBatis 會對於一些查詢提供會話級別的數據緩存,會將對某一次查詢,放置到SqlSession 中,在允許的時間間隔內,對於完全相同的查詢,MyBatis 會直接將緩存結果返回給用戶,而不用再到數據庫中查找。
3.4 SQL語句的配置方式
傳統的MyBatis 配置SQL 語句方式就是使用XML文件進行配置的,但是這種方式不能很好地支持面向接口編程的理念,爲了支持面向接口的編程,MyBatis 引入了Mapper接口的概念,面向接口的引入,對使用註解來配置SQL 語句成爲可能,用戶只需要在接口上添加必要的註解即可,不用再去配置XML文件了,但是,目前的MyBatis 只是對註解配置SQL 語句提供了有限的支持,某些高級功能還是要依賴XML配置文件配置SQL 語句。






4 引導層

引導層是配置和啓動MyBatis 配置信息的方式。MyBatis 提供兩種方式來引導MyBatis :基於XML配置文件的方式和基於Java API 的方式。

二、MyBatis的主要構件及其相互關係

從MyBatis代碼實現的角度來看,MyBatis的主要的核心部件有以下幾個:

SqlSession 作爲MyBatis工作的主要頂層API,表示和數據庫交互的會話,完成必要數據庫增刪改查功能
Executor MyBatis執行器,是MyBatis 調度的核心,負責SQL語句的生成和查詢緩存的維護
StatementHandler 封裝了JDBC Statement操作,負責對JDBC statement 的操作,如設置參數、將Statement結果集轉換成List集合。
ParameterHandler 負責對用戶傳遞的參數轉換成JDBC Statement 所需要的參數;
ResultSetHandler 負責將JDBC返回的ResultSet結果集對象轉換成List類型的集合;
TypeHandler 負責java數據類型和jdbc數據類型之間的映射和轉換;
MappedStatement MappedStatement維護了一條<select|update|delete|insert>節點的封裝;
SqlSource 負責根據用戶傳遞的parameterObject,動態地生成SQL語句,將信息封裝到BoundSql對象中,並返回;
BoundSql 表示動態生成的SQL語句以及相應的參數信息;
Configuration MyBatis所有的配置信息都維持在Configuration對象之中。








它們的關係如下圖所示:
在這裏插入圖片描述

三、總結

MyBatis 是一個被廣泛應用的持久化框架。一個簡單的使用示例如下所示,先創建會話工廠,然後從會話工廠中打開會話,通過 class 類型和配置生成 Mapper 接口的代理實現,最後使用 Mapper 進行持久化操作。
所有流程大體可以用一張圖來總結:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章