1. 程式人生 > >初窺Mybatis初始化

初窺Mybatis初始化

# 引言 這篇文章呢,主要是講Mybtais的兩種方式的原始碼剖析:傳統方式以及Mapper代理方式,初次探索Mybatis原始碼,希望大佬勿噴並且指正錯誤,謝謝! 個人部落格:www.fqcoder.cn # 一、Mybatis架構原理 ### 1.架構圖 首先,讓我們來看看下面這張圖: ![image-20200305163124096](https://img-blog.csdnimg.cn/20200307142752856.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjk1ODAy,size_16,color_FFFFFF,t_70) 我們吧Mybtais功能架構可以分為三層: 1.介面層:提供給外部使用的介面API,開發人員通過這些本地API來操作資料庫。介面一層接收到呼叫請求就會呼叫資料處理來完成具體的資料處理。 MyBatis和資料庫互動有兩種方式:(也是我們接下來需要死磕的目標) a.使用傳統的Mybatis提供的API b.使用Mapper代理的方式 2.資料處理層:負責具體的SQL查詢、SQL解析、SQL執行、結果處理和對映等,它主要的目的是根據呼叫的請求完成一次資料庫的操作。 3.框架支撐層:負責最基礎的功能支撐,包括連線管理、事務管理、配置載入和快取處理,這些都是共用的東西,將他們抽取出來作為最基礎的元件。為上層的資料處理層提供最基礎的支撐。 ### 2.主要構件及其相互關係 | 構件 | 描述 | | :--------------: | ------------------------------------------------------------ | | SqlSession | 作為MyBatis工作主要頂層API,表示和資料庫互動的會話,完成必要資料庫
增刪改查功能 | | Executor | Mybatis執行器,是Mybatis排程的核心,負責SQL語句的生成和查詢快取的維護 | | StatementHandler | 封裝了JDBC Statemenet操作,負責對JDBC Statement的操作,如設定引數、
將Statement結果集轉換成List集合 | | ParameterHandler | 負責對使用者傳遞的引數轉換成JDBC Statement所需要的引數 | | ResultSetHandler | 負責將JDBC返回的ResultSet結果集物件轉換成List型別的集合 | | TypeHandler | 負責java資料型別和jdbc資料型別之間的對映和轉換 | | MappedStatement | MappedStatement維護