精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深入詳解Mybatis的架構原理與六大核心流程

開發 架構
MyBatis 是 Java 生態中非常著名的一款 ORM 框架,目前在一線互聯網大廠中應用廣泛,Mybatis已經成為了一個必會框架。

MyBatis 是 Java 生態中非常著名的一款 ORM 框架,目前在一線互聯網大廠中應用廣泛,Mybatis已經成為了一個必會框架。

如果你想要進入一線大廠,能夠熟練使用 MyBatis 開發已經是一項非常基本的技能,同時大廠也更希望自己的開發人員深入了解 MyBatis 框架的原理和核心實現。

從這個角度看,理解 MyBatis 原理,閱讀 MyBatis核心源碼,這樣更有利于提高職場競爭力。

在深入了解Mybatis的源碼之前,我們先了解一下Mybatis的整體架構和工作原理,這樣有助于我們在閱讀源碼過程中了解思路和流程。

Mybatis架構設計

我們把Mybatis的功能架構分為三層:

  • API接口層
  • 數據處理層
  • 基礎支撐層

接口層

接口層:主要就是和數據庫交互,提供給外部使用的接口API,開發人員通過這些本地API來操縱數據庫,接口層一接收到調用請求就會調用數據處理層來完成具體的數據處理。

以使用Mapper接口為例,將配置文件中的每一個 節點抽象為一個 Mapper 接口,這個接口中聲明的方法和跟Mapper.xml中的 節點項對應。

id值對應方法名稱,parameterType 值對應方法的入參類型,而resultMap 值則對應返回值類型。

配置好后,MyBatis 會根據接口聲明的方法信息,通過動態代理機制生成一個Mapper 實例,當調用接口方法時,根據這個方法的方法名和參數類型,確定Statement Id,底層還是通過 SqlSession.select/update( “statementId”, parameter) 等來實現對數據庫的操作。

數據處理層

數據處理層:可以說是MyBatis 的核心,負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等,它主要的目的是根據調用的請求完成一次數據庫操作。

從大的方面上講,它要完成兩個功能:

  • 通過傳入參數構建動態SQL語句
  • SQL語句的執行以及封裝查詢結果集

1.通過傳入參數構建動態SQL語句

動態語句生成能夠說是MyBatis框架很是優雅的一個設計,MyBatis 經過傳入的參數值,使用 Ognl 來動態地構造SQL語句,使得MyBatis 有很強的靈活性和擴展性。

參數映射指的是對于java 數據類型和jdbc數據類型之間的轉換,這里有包括兩個過程:

  • 查詢階段
  • 查詢結果集轉換階段

查詢階段要將java類型的數據,轉換成jdbc類型的數據,經過 preparedStatement.setXXX() 來設值;

另外一個就是對resultset查詢結果集的jdbcType 數據轉換成java 數據類型。

2. SQL語句的執行以及封裝查詢結果集

動態SQL語句生成以后,MyBatis 將執行SQL語句,并將可能返回的結果集轉換成List 列表。

MyBatis 在對結果集的處理中,支持結果集關系一對多和多對一的轉換,而且有兩種支持方式,一種為嵌套查詢語句的查詢,還有一種是嵌套結果集的查詢。

基礎支撐層

基礎支撐層是整個MyBatis框架的地基,負責最基礎的功能支撐,包括連接管理、事務管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件,為上層的數據處理層提供最基礎的支撐。

1.緩存機制

數據庫是實踐生成中非常核心的存儲,很多業務數據都會落地到數據庫,所以數據庫性能的優劣直接影響了上層業務系統的優劣。

我們很多線上業務都是讀多寫少的場景,在數據庫遇到瓶頸時,緩存是最有效、最常用的手段之一,正確使用緩存可以將一部分數據庫請求攔截在緩存這一層,這就能夠減少一部分數據庫的壓力,提高系統性能。

除了使用 Redis、Memcached 等外置的第三方緩存以外,持久化框架一般也會自帶內置的緩存,例如,MyBatis 就提供了一級緩存和二級緩存,具體實現位于基礎支撐層的緩存模塊中。

2.反射工具

該模塊對 Java 原生的反射進行了良好的封裝,提供了更加簡潔易用的 API ,方便上層使調用,并且對反射操作進行了一系列優化,例如緩存了類的元數據,提高了反射操作的性能。

3.類型轉換

類型轉換模塊提供了兩個主要功能,一個功能是別名機制,MyBatis 為了簡化配置文件提供了別名機制。

另一個功能是實現 JDBC 類型與 Java 類型之間的轉換,該功能在為 SQL 語句綁定實參以及映射查詢結果集時都會涉及。

4.日志

提供詳細的日志輸出信息,并且能夠集成多種日志框架,其日志模塊的一個主要功能就是集成第三方日志框架。

5.資源加載

資源加載模塊主要是對類加載器進行封裝,確定類加載器的使用順序,并提供了加載類文件以及其他資源文件的功能。

6.解析器

解析器模塊主要提供兩個功能,一個功能是對 XPath 進行封裝,為 MyBatis 初始化時解析 mybatis-config.xml 配置文件以及映射配置文件提供支持。

另一個功能是為處理動態 SQL 語句中的占位符提供支持。

7.事務管理

持久層框架一般都會提供一套事務管理機制實現數據庫的事務控制,MyBatis 對數據庫中的事務進行了一層簡單的抽象,提供了簡單易用的事務接口和實現。

一般情況下,Java 項目都會集成 Spring,并由 Spring 框架管理事務。

8.Binding

在調用 SqlSession 相應方法執行數據庫操作時,需要指定映射文件中定義的 SQL 節點,如果出現拼寫錯誤,我們只能在運行時才能發現相應的異常。

為了盡早發現這種錯誤,MyBatis 通過 Binding 模塊將用戶自定義的 Mapper 接口與映射配置文件關聯起來,系統可以通過調用自定義 Mapper 接口中的方法執行相應的SQL 語句完成數據庫操作,從而避免上述問題。

需要注意的是,無須編寫自定義 Mapper 接口的實現,具體的Mapper接口實現MyBatis 會自動為其創建動態代理對象。

9.數據源

對于 ORM 框架而言,數據源的組織是一個非常重要的一部分,這直接影響到框架的性能問題。

數據庫連接是一項有限的昂貴資源,一個數據庫連接對象均對應一個物理數據庫連接,每次操作都打開一個物理連接,使用完都關閉連接,這樣造成系統的性能低下。

數據庫連接池的解決方案是在應用程序啟動時建立足夠的數據庫連接,并將這些連接組成一個連接池,由應用程序動態地對池中的連接進行申請、使用和釋放。

打開Mybatis源碼找到datasource包下就可以看到連接池的實現,如下圖所示:

Mybatis核心執行流程

mybatis的總體執行流程,總體如下六大步驟:

1.MyBatis配置文件

config.xml:配置了全局配置文件,配置了MyBatis的運行環境等信息。

mapper,xml:sql的映射文件,配置了操作數據庫的sql語句,此文件需在config.xml中加載。

2.SqlSessionFactory

通過MyBatis環境等配置信息構造SqlSessionFactory(會話工廠)。

3.SqlSession

通過會話工廠創建SqlSession(會話),對數據庫進行增刪改查操作。

4.Exector執行器

MyBatis底層自定義了Exector執行器接口來具體操作數據庫,Exector接口有兩個實現,一個基本執行器(默認),一個是緩存執行器,SqlSession底層是通過Exector接口操作數據庫。

5.MappedStatement

MyBatis的一個底層封裝對象,它包裝了MyBatis配置信息與sql映射信息等。mapper.xml中的insert/select/update/delete標簽對應一個MappedStatement對象。標簽的id就是MappedStatement的id。

MappedStatement對sql執行輸入參數進行定義,包括HashMap、基本類型、pojo、Executor通過MappedStatement在執行sql前將輸入的Java對象映射至sql中,輸入參數映射就是JDBC編程對preparedStatement設置參數。

MappedStatement對sql執行輸出結果進行定義,包括HashMap、基本類型、pojo,Executor通過MappedStatement在執行sql后將輸出結果映射至Java對象中,輸出結果映射就是JDBC編程對結果的解析處理過程。

到此我就把Mybatis的架構從全局上做了一個拆解,后續我將重點分析其核心源碼,這樣先全局再局部,這樣更有利于掌握其核心原理實現,希望這個框架系列能對你有所用。


責任編輯:武曉燕 來源: mikechen的互聯網架構
相關推薦

2022-05-15 23:32:00

元宇宙虛擬世界科技

2025-03-27 00:25:55

微服務架構技術

2018-08-06 09:40:22

2025-03-24 00:25:00

Go語言并發編程

2025-06-30 03:25:00

2022-02-25 20:44:28

框架深度學習架構

2015-09-09 16:23:58

蘋果核心產品

2009-09-15 16:53:50

2010-03-30 11:29:08

BMCCMDBIT運維

2024-05-30 07:41:22

2024-10-22 14:42:14

2013-12-12 13:02:01

2010-09-25 10:56:32

WebLogicJVM

2017-01-19 09:45:53

紅帽

2009-07-20 17:42:04

iBATIS入門

2019-01-07 08:00:00

2010-09-03 14:18:45

CSS選擇符CSS

2023-05-11 11:36:56

云計算云供應商

2016-07-06 11:16:47

2010-09-09 10:54:58

點贊
收藏

51CTO技術棧公眾號

亚洲一区二区三区在线视频| 国产亚洲精品久久久久久牛牛| www国产免费| 日本xxxxxwwwww| 丝袜亚洲另类欧美综合| www.午夜精品| 五十路六十路七十路熟婆| 婷婷激情一区| 一区二区三区中文在线| 欧美人与物videos另类| 国产精品视频久久久久久| 精品1区2区3区4区| 这里只有精品视频| 国产在线不卡av| 日本在线中文字幕一区二区三区| 一区二区在线观看视频在线观看| 久久精品日韩精品| a级片免费观看| 日日嗨av一区二区三区四区| 欧美激情成人在线视频| 在线观看免费黄色网址| 欧美日日夜夜| 日韩免费视频一区二区| 中文字幕第88页| 91精品产国品一二三产区| **欧美大码日韩| 热舞福利精品大尺度视频| 亚洲精品综合久久| 国产在线观看免费一区| 国产精品第一视频| 可以免费看的av毛片| 雨宫琴音一区二区三区| 正在播放亚洲1区| 亚洲欧美在线不卡| 红杏成人性视频免费看| 日韩一区二区视频在线观看| 一级片视频免费观看| 免费亚洲电影| 狠狠躁夜夜躁久久躁别揉| 轻点好疼好大好爽视频| 久久99精品久久| 国产精品区一区二区三区| 日本视频一区二区不卡| 天堂中文资源在线观看| 国产精品一区久久久久| 国产精品久久999| 日韩欧美一区二区一幕| 欧美黄污视频| 日韩精品中文字幕有码专区| 午夜av中文字幕| 国产综合色激情| 色又黄又爽网站www久久| 日韩av新片网| 日本大胆在线观看| 一区二区三区精品视频| 亚洲欧美一二三| 免费网站看v片在线a| 久久久久久久久岛国免费| 91在线|亚洲| 91丨九色丨丰满| 免费在线观看精品| 国产精品v片在线观看不卡| 丰满少妇乱子伦精品看片| 欧美大片一区| 欧美福利视频在线| 欧美人妻精品一区二区三区 | 色偷偷久久一区二区三区| 每日在线观看av| 国产三级伦理在线| 亚洲国产精品久久人人爱蜜臀| 路边理发店露脸熟妇泻火| 欧美天天影院| 最新中文字幕一区二区三区| 视频一区二区视频| 免费黄色电影在线观看| 国产欧美视频一区二区| 夜夜爽99久久国产综合精品女不卡| 国产youjizz在线| 欧美激情中文字幕| 99re99热| 特级毛片在线| 午夜久久久久久| 日本黄色三级大片| 久久xxx视频| 56国语精品自产拍在线观看| 天天爽夜夜爽视频| 91欧美极品| 日韩av在线一区| www..com.cn蕾丝视频在线观看免费版| 久久久精品国产**网站| 亚洲国产精品免费| 国产探花视频在线播放| 66视频精品| 国产+成+人+亚洲欧洲| 日韩免费视频一区二区视频在线观看| 玖玖视频精品| 114国产精品久久免费观看| 韩国av免费在线| 91女厕偷拍女厕偷拍高清| 日本不卡二区| v天堂福利视频在线观看| 亚洲午夜在线观看视频在线| 日本免费黄视频| 久久91视频| 精品久久久久久久久久久久久久久久久 | 国产成人综合精品| 国产精品久久久久精| 国产成人免费视频一区| 久久久影院一区二区三区| 69av在线| 午夜精品久久久久久久久久 | 男女视频在线观看免费| 亚洲欧洲成人精品av97| 99在线精品免费视频| 欧美日韩精品免费观看视欧美高清免费大片| 欧美视频中文字幕| 玖玖爱在线精品视频| 久久高清免费| 欧美亚洲成人网| 国产丝袜视频在线观看| 久久你懂得1024| 日韩精品视频在线观看视频| 88xx成人网| 日韩精品中文字幕在线观看| 精品一区在线观看视频| 日韩精品国产欧美| 国产亚洲二区| 黄色片免费在线观看| 日韩欧美黄色动漫| 亚洲国产精品狼友在线观看| 日韩在线看片| 日本道色综合久久影院| 亚洲第一页在线观看| 国产日韩欧美一区二区三区综合| 你懂的av在线| theporn国产在线精品| 色阁综合伊人av| 亚洲自拍一区在线观看| 成人午夜在线播放| 亚洲色图都市激情| 久久精品97| 亚洲欧美综合另类中字| 亚洲一区二区91| 国产精品亚洲第一区在线暖暖韩国| 日韩精品国内| 另类激情视频| 国产网站欧美日韩免费精品在线观看| 黄色片在线观看网站| 美女www一区二区| 麻豆传媒一区| 日本欧美日韩| 亚洲精品一区久久久久久| 国产无遮挡又黄又爽又色| 韩国理伦片一区二区三区在线播放| 欧美日韩精品久久| 欧美片第一页| 亚洲欧洲黄色网| 黑人精品无码一区二区三区AV| 成人三级伦理片| 国产在线无码精品| 国模大尺度视频一区二区| 丝袜美腿精品国产二区| 性色av一区二区三区四区| 91网站在线观看视频| 丁香婷婷综合激情| 97人人澡人人爽91综合色| 欧美日本亚洲视频| 性一交一乱一色一视频麻豆| 亚洲精选视频免费看| 中文字幕第三区| 欧美久久成人| 成人在线视频网址| heyzo高清在线| 5月丁香婷婷综合| 日韩欧美大片在线观看| 99r精品视频| 99久久国产宗和精品1上映| 精品色999| 国产欧美精品在线播放| 黄色网页在线观看| 精品日韩99亚洲| 日本午夜视频在线观看| 久久久久久电影| 天天看片天天操| 欧美久久99| 国产原创精品| 日韩一区二区三区免费| 在线播放日韩精品| 国产成人a人亚洲精品无码| 一区二区三区日本| 可以看的av网址| 伊人久久亚洲美女图片| 久久久久资源| 日韩久久99| 伦理中文字幕亚洲| 日韩在线视频观看免费| 91国内精品野花午夜精品| 99久久精品久久亚洲精品| 国产精品1区2区3区在线观看| 欧美午夜小视频| 国产麻豆精品久久| 亚洲v日韩v综合v精品v| 欧美性xxx| 久久国产一区二区三区| 亚洲h视频在线观看| 色天使色偷偷av一区二区 | 最新欧美精品一区二区三区| 四虎永久免费观看| 日韩av一级片| 欧美黄网在线观看| 怕怕欧美视频免费大全| 成人黄色在线观看| 免费看电影在线| 中文字幕日韩视频| 日本免费网站在线观看| 欧美精品丝袜中出| 婷婷激情五月网| 亚洲视频免费观看| 无码熟妇人妻av| 国产成人精品一区二| aⅴ在线免费观看| 欧美 日韩 国产精品免费观看| 欧美国产综合视频| 中文成人在线| 欧美亚洲在线播放| 日韩av毛片| 久久九九国产精品怡红院| 噜噜噜噜噜在线视频| 精品国产凹凸成av人网站| 中文字幕丰满人伦在线| 精品露脸国产偷人在视频| 午夜国产福利一区二区| 中文字幕欧美区| 99久久人妻无码中文字幕系列| 另类专区欧美蜜桃臀第一页| 欧美黑人又粗又大又爽免费| 亚洲激情女人| 免费看黄色a级片| 亚洲澳门在线| 亚洲一区二区三区四区中文| 国产一区二区三区91| 国产成人精品免费视频大全最热 | 91精品国产综合久久香蕉最新版| 无码小电影在线观看网站免费| 成年无码av片在线| 国产激情视频在线观看| 中文字幕精品在线| 国产区高清在线| 日韩精品在线免费观看视频| www.xxxx国产| 日韩精品一区二区三区四区视频 | 日韩国产一区二| 久热免费在线观看| 国产精品亚洲产品| 免费看的黄色大片| 亚洲视频播放| 日本日本19xxxⅹhd乱影响| 国内一区二区三区| 300部国产真实乱| 国产精品porn| 精品久久久无码人妻字幂| 欧美阿v一级看视频| 日韩第一页在线观看| 91高清一区| 国产911在线观看| 午夜精品久久久久99热蜜桃导演| 中国女人做爰视频| 欧美粗暴jizz性欧美20| 男人插女人视频在线观看| 在线不卡视频| 男人揉女人奶房视频60分| 国产农村妇女毛片精品久久莱园子| 少妇无码av无码专区在线观看| 亚洲国产婷婷| 97成人在线观看视频| 日韩在线a电影| 国产亚洲视频一区| 国产99一区视频免费 | 国产乱码精品1区2区3区| 深夜福利网站在线观看| 风间由美一区二区三区在线观看| 中文字幕99页| 久久亚洲欧美国产精品乐播 | 久久综合电影一区| 丰乳肥臀在线| 国产精品2018| 国产成人免费视频网站视频社区 | 中文字幕在线观看欧美| 欧美精品日韩一区| 丁香六月天婷婷| 精品伊人久久97| 国产视频第一区| 色在人av网站天堂精品| 538在线精品| 国产精品美女久久久久久免费| 伊人亚洲精品| 久久99精品久久久久久三级| 日韩成人免费| 99在线免费视频观看| 丝袜诱惑亚洲看片| 高清av免费看| wwwwww.欧美系列| 色婷婷粉嫩av| 午夜久久久影院| 97caocao| 亚洲免费视频观看| 操你啦在线视频| 日韩免费观看视频| 精品中文字幕一区二区三区| 国产中文一区二区| 中文字幕午夜精品一区二区三区| 国产乱子伦精品视频| 日韩成人午夜精品| 亚洲精品无码一区二区| 中文字幕av资源一区| 国产污视频在线观看| 欧美日韩三级一区| 免费在线性爱视频| 久久99视频免费| 亚洲成人av观看| 欧美lavv| 日韩图片一区| 日本少妇一区二区三区| 国产欧美精品一区二区三区四区 | 亚洲欧洲精品一区二区三区| 日韩aaaaaa| 欧美一二三区在线| 久草在线青青草| 久久久久久美女| 久久丁香四色| 亚洲人成网站在线播放2019| 亚洲电影成人| 色哟哟视频在线| 亚洲美女在线国产| 亚洲熟妇无码久久精品| 亚洲码在线观看| xxxx在线视频| 91精品久久香蕉国产线看观看| 欧美中文一区二区| 岳毛多又紧做起爽| 91视频一区二区三区| 国产精品9191| 日韩精品一区二区三区在线观看 | 中文在线最新版天堂| 亚洲精品永久免费精品| 538在线视频| 动漫美女被爆操久久久| 欧美激情1区| 国产黄色一区二区三区| 亚洲视频香蕉人妖| 伊人久久亚洲综合| 中文字幕日韩欧美在线视频| 亚洲日本网址| 欧美午夜精品理论片a级大开眼界| 99国产精品视频免费观看一公开| 一二三区视频在线观看| 一区二区三区欧美日| 精品黑人一区二区三区在线观看| 久久久成人av| 成人国产精品一区二区网站| 中文字幕在线中文| 丁香六月综合激情| 日本熟妇乱子伦xxxx| 亚洲二区在线播放视频| 免费成人在线电影| 久久精品日韩| 日韩黄色一级片| 成人欧美一区二区三区黑人一| 3d成人动漫网站| 调教一区二区| 精品日本一区二区三区在线观看 | 激情五月六月婷婷| 国产91精品一区二区麻豆网站 | 国产精品亚洲片在线播放| 丁香啪啪综合成人亚洲| 国产精品私人影院| 91成人一区二区三区| 欧美成人免费全部| 一区二区视频| 凹凸日日摸日日碰夜夜爽1| 日本一区二区三区视频视频| 中文字幕一区二区在线视频| 久久精品人人做人人爽| 99这里只有精品视频| 国产白丝袜美女久久久久| 久久久久久亚洲综合| 中文字幕在线观看1| 久久99热精品| 亚洲尤物av| 国产淫片av片久久久久久| 亚洲欧美激情视频在线观看一区二区三区| 亚洲AV无码一区二区三区少妇| 91精品国产91久久久久久吃药| 亚洲人成精品久久久| 国产精品久久a| 亚洲亚洲精品在线观看| 久久久久久女乱国产| 99re在线观看视频| 久久国产精品毛片| 在线观看亚洲网站|