精品欧美激情精品一区,亚洲自拍的二区三区,亚洲综合精品一区二区,国产伦精品一区二区三区视频免费


學AI,好工作 就找北大青鳥
關注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

MyBatis的執行流程詳解,值得收藏!

來源:北大青鳥總部 2020年06月16日 13:44

摘要: MyBatis的執行流程詳解
說到流程這個事兒,大家可能最先想到的就是富士康的流水線,標準化的分工讓每道工序都如絲一般潤滑,所以才成就了富士康"世界工廠"的名號。

想當年猿小二也是眾多流水線工人中的一員,每天成百上千次的重復著同一個動作;突然有一天猿小二頓悟了,他認為我不能在這里浪費青春,我要去改變世界,于是他決定學習Java,沒想到這可一發不可收拾,學起Java來,如久旱逢甘霖,如魚得水一樣的輕松順暢。
但是好景不長,最近他就在學習MyBatis這里遇到了點小麻煩,總是搞不清楚,MyBatis是怎么一個接口、一個映射文件(寫sql)就可以操作數據庫了呢?它的執行流程到底是怎么樣的呢?帶著這樣的疑問,猿小二開始了他的探索....
說到MyBatis執行流程,估計80%的程序員可能每天都沉浸在一個接口方法、一條SQL快樂的coding中,也可能他們都在忙著陪女朋友(可能性不大,因為程序員沒有女朋友),也可能是沒有時間研究;也可能覺得使用起來很簡單,不就是加載配置文件,執行SQL嗎,soeasy;但是作為一個勵志成為優秀工程師的程序猿,僅僅停留在這個層面還遠遠不夠,它根本滿足不了我們對技術的渴望。
核心流程介紹
我們都知道MyBtis是對JDBC的簡易封裝,它的出現某種程度了是為了消除所有的JDBC代碼和參數的手工設置以及結果集的封裝問題;不管怎樣,JDBC的那一套還是不會變的,只是做了抽象、封裝、歸類等;所以想要理解MyBatis的執行流程,那就不得不先回顧一下JDBC的執行流程。
JDBC執行六部走
  1. 注冊驅動
  2. 獲取Connection連接
  3. 執行預編譯
  4. 執行SQL
  5. 封裝結果集
  6. 釋放資源
以上就是JDBC操作數據的流程步驟,然后我看下MyBatis的執行流程圖。

MyBatis執行八步走
上面流程就是MyBatis內部核心流程,咱們來一步步解釋下,根據圖中步驟,我們可以將這個執行流程分成了8個步驟。
  1. 讀取MyBatis的核心配置文件。mybatis-config.xml為MyBatis的全局配置文件,用于配置數據庫連接、屬性、類型別名、類型處理器、插件、環境配置、映射器(mapper.xml)等信息,這個過程中有一個比較重要的部分就是映射文件其實是配在這里的;這個核心配置文件最終會被封裝成一個Configuration對象
  2. 加載映射文件。映射文件即SQL映射文件,該文件中配置了操作數據庫的SQL語句,映射文件是在mybatis-config.xml中加載;可以加載多個映射文件。常見的配置的方式有兩種,一種是package掃描包,一種是mapper找到配置文件的位置。
<!-- 使用包路徑,掃描包下所有的接口,這種方式比較方便 -->
<package name="com.mybatis.demo"/> <!-- resource:使用相對路徑的資源引用--><!-- url:使用絕對類路徑的資源引用--><!-- class:使用映射器接口實現類的完全限定類名--><mapper resource="xxx.xml"/>
  1. 構造會話工廠獲取SqlSessionFactory。這個過程其實是用建造者設計模式使用SqlSessionFactoryBuilder對象構建的,SqlSessionFactory的最佳作用域是應用作用域。
// 2. 創建SqlSessionFactory對象實際創建的是DefaultSqlSessionFactory對象SqlSessionFactory builder = new SqlSessionFactoryBuilder().build(inputStream);
  1. 創建會話對象SqlSession。由會話工廠創建SqlSession對象,對象中包含了執行SQL語句的所有方法,每個線程都應該有它自己的 SqlSession 實例。SqlSession的實例不是線程安全的,因此是不能被共享的,所以它的最佳的作用域是請求或方法作用域。
// 3. 創建SqlSession對象實際創建的是DefaultSqlSession對象  SqlSession sqlSession = builder.openSession();
  1. Executor執行器。是MyBatis的核心,負責SQL語句的生成和查詢緩存的維護,它將根據SqlSession傳遞的參數動態地生成需要執行的SQL語句,同時負責查詢緩存的維護
  • SimpleExecutor -- SIMPLE 就是普通的執行器。
  • ReuseExecutor -執行器會重用預處理語句(PreparedStatements)
  • BatchExecutor --它是批處理執行器
  1. MappedStatement對象。MappedStatement是對解析的SQL的語句封裝,一個MappedStatement代表了一個sql語句標簽,如下:
<!--一個動態sql標簽就是一個`MappedStatement`對象--><select id="selectUserList" resultType="com.mybatis.User">  select * from t_user</select>
  1. 輸入參數映射。輸入參數類型可以是基本數據類型,也可以是Map、List、POJO類型復雜數據類型,這個過程類似于JDBC的預編譯處理參數的過程,有兩個屬性 parameterType和parameterMap
  2. 封裝結果集。可以封裝成多種類型可以是基本數據類型,也可以是Map、List、POJO類型復雜數據類型。封裝結果集的過程就和JDBC封裝結果集是一樣的。也有兩個常用的屬性resultType和resultMap。
我們再來看一下這個完整的執行步驟,代碼如下:
/*** Mybatis測試*/public class MybatisTest {public static void main(String[] args) throws Exception {  // 1.加載配置文件  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");  // 2. 創建SqlSessionFactory對象實際創建的是DefaultSqlSessionFactory對象  SqlSessionFactory builder = new SqlSessionFactoryBuilder().build(inputStream);  // 3. 創建SqlSession對象實際創建的是DefaultSqlSession對象  SqlSession sqlSession = builder.openSession();  // 4. 創建代理對象  UserMapper mapper = sqlSession.getMapper(UserMapper.class);  // 5. 執行查詢語句  List<User> users = mapper.selectUserList();  // 6. 釋放資源  sqlSession.close();  inputStream.close(); } }
通過分析Mybatis的執行流程,我們可以發現它和JDBC基本大同小異,比較明顯的地方就是:
  1. 注冊驅動獲取鏈接的部分都抽取到了核心配置文件mybatis-config.xml中。
  2. sql語句抽取到了映射文件mapper.xml中。
至于其他的部分,如執行sql預編譯、執行查詢、封裝結果集等都是抽取到了其他的類中來完成這些操作。通過對JDBC執行步驟來對比分析MyBatis的執行的流程,總體上來看它們的執行步驟基本是一樣的,所以大家是不是覺得MyBatis這個框架其實也挺簡單的,總結下其實就是:
  • 加載解析配置文件(核心配置文件和映射文件)
  • 處理參數
  • 執行查詢
  • 封裝結果集
熱門班型時間
人工智能就業班 即將爆滿
AI應用線上班 即將爆滿
UI設計全能班 即將爆滿
數據分析綜合班 即將爆滿
軟件開發全能班 爆滿開班
網絡安全運營班 爆滿開班
報名優惠
免費試聽
課程資料
官方微信
返回頂部
培訓課程 熱門話題 站內鏈接
精品欧美激情精品一区,亚洲自拍的二区三区,亚洲综合精品一区二区,国产伦精品一区二区三区视频免费
亚洲1区2区3区视频| 激情欧美日韩一区二区| 国产一区啦啦啦在线观看| 99精品久久久久久| 亚洲免费久久| 日韩视频一区二区| 一区二区三区自拍| 国产精品亚洲一区二区三区在线| 国产精品国产精品| 91成人免费电影| 欧美激情综合在线| 日本不卡视频一二三区| 5g国产欧美日韩视频| 中文字幕中文字幕在线中一区高清| 精品久久久久久久久久久久包黑料| 亚洲最新在线观看| 成人性生交大片免费看视频在线| 日本三级中国三级99人妇网站| 91麻豆精品国产91久久久| 亚洲品质自拍视频| 国产精品夜夜嗨| 日韩黄色影视| 欧美精品一区二区三| 日韩综合一区二区| 国产精品福利视频| 欧美久久婷婷综合色| 亚洲乱码日产精品bd| 成人综合婷婷国产精品久久蜜臀| 视频三区二区一区| 久久久另类综合| 蜜臀av性久久久久蜜臀av麻豆| 成人情视频高清免费观看电影| 欧美三级资源在线| 亚洲美女在线一区| 99国产精品久久久| 在线观看国产日韩| 亚洲精品美国一| av成人动漫在线观看| 在线观看日韩毛片| 亚洲男人都懂的| 91网站最新地址| 欧美日韩情趣电影| 亚洲图片一区二区| 99在线观看| 日韩视频一区二区在线观看| 三级久久三级久久久| 精品国产一区二区三区免费| 日韩免费一区二区三区在线播放| 婷婷丁香激情综合| 久久草视频在线看| 久久久噜噜噜久久中文字幕色伊伊 | 久久久99免费| 国产在线国偷精品产拍免费yy| 日本一区二区三不卡| 国产情人综合久久777777| 国模一区二区三区白浆| 香蕉久久夜色| 亚洲欧洲精品一区二区三区不卡| 不卡的av网站| 欧美日韩精品三区| 天天影视色香欲综合网老头| 精品无人区一区二区三区| 久久色成人在线| 国产成人精品亚洲午夜麻豆| 一本久久a久久精品亚洲| 亚洲美女视频在线观看| αv一区二区三区| 日韩美女一区二区三区四区| 精品一区二区三区欧美| 亚洲欧洲一区二区福利| 亚洲男人的天堂在线aⅴ视频| 91传媒视频免费| 精品乱码亚洲一区二区不卡| 国产激情视频一区二区在线观看| 91福利视频网站| 日韩va亚洲va欧美va久久| 日韩欧美电影一区二区| 综合久久综合久久| 国产精品一区免费观看| 久久久www免费人成精品| 成人夜色视频网站在线观看| 91精品麻豆日日躁夜夜躁| 蜜桃91丨九色丨蝌蚪91桃色| 在线观看一区欧美| 亚洲成a人v欧美综合天堂| 欧美日韩在线观看一区| 中文字幕五月欧美| 国内精品**久久毛片app| 国产欧美精品一区二区色综合朱莉| 不卡视频免费播放| 欧美大尺度电影在线| 风间由美一区二区三区在线观看 | 亚洲ai欧洲av| 一区二区三区在线视频免费| 久久精品ww人人做人人爽| 国产精品午夜春色av| 国产高清一区二区三区| 日本一区二区动态图| 高清国语自产拍免费一区二区三区| 久久综合色天天久久综合图片| 成人av网在线| 久久综合色婷婷| 91精品国自产在线观看| 国产午夜精品久久久久久免费视| 91麻豆文化传媒在线观看| 久久精品欧美日韩精品| 国产欧美韩日| 在线观看一区二区精品视频| 日韩在线播放一区二区| 日本韩国视频一区二区| 蜜桃av一区二区在线观看| 欧美亚洲一区三区| 久久精品99国产精品日本| 欧美日韩中文另类| 国产精品正在播放| 日韩女优毛片在线| 99在线精品一区二区三区| 久久久综合网站| 国产精品对白刺激久久久| 中文字幕一区二区三区视频| 欧美美乳视频网站在线观看| 亚洲一区二区av电影| 一卡二卡3卡四卡高清精品视频| 日韩影院精彩在线| 欧美日韩视频在线观看一区二区三区| 国产一区日韩二区欧美三区| 日韩精品一区二区三区swag| 91亚洲精华国产精华精华液| 国产精品入口麻豆九色| 免费试看一区| 丝袜脚交一区二区| 欧美日本乱大交xxxxx| 成人高清伦理免费影院在线观看| 久久免费国产精品| 精品一区二区三区自拍图片区| 亚洲高清一区二区三区| 色婷婷精品久久二区二区蜜臀av| 国内精品伊人久久久久av一坑| 日韩精品中文字幕在线一区| 超碰97在线资源| 亚洲一区二区三区激情| 欧美性生活影院| 成人动漫视频在线| 国产精品麻豆视频| 亚洲欧美日韩国产成人综合一二三区| 免费高清成人在线| 日韩精品影音先锋| 精品国产aⅴ麻豆| 日韩在线卡一卡二| 日韩欧美国产综合在线一区二区三区| 国产91亚洲精品一区二区三区| 一区二区三区免费网站| 欧美网站大全在线观看| caoporn国产精品| 亚洲欧美日韩国产另类专区| 在线免费观看日本欧美| 成人av在线一区二区三区| 专区另类欧美日韩| 欧美在线一区二区三区| 不卡一区二区在线| 亚洲精品美腿丝袜| 欧美人与z0zoxxxx视频| 成人免费视频视频在| 午夜激情久久久| 欧美一区二区三区啪啪| 精品国产免费久久久久久尖叫 | 亚洲免费观看高清完整版在线| 日本国产一区二区| 99re这里都是精品| 亚洲成人免费视| 日韩欧美在线1卡| 欧美xxxx黑人又粗又长精品| 九色porny丨国产精品| 国产欧美一区二区三区在线看蜜臀| 日韩欧美在线电影| 福利电影一区二区| 亚洲黄一区二区三区| 欧美精品久久一区二区三区 | 亚洲国产高清不卡| 色8久久人人97超碰香蕉987| 91视视频在线观看入口直接观看www | 国产亚洲欧美日韩在线一区| 午夜精品亚洲一区二区三区嫩草| 国产成人自拍在线| 亚洲免费观看高清完整版在线观看 | 欧美精品九九99久久| 黄色一区三区| 国产一区二区福利| 亚洲男同性恋视频| 日韩手机在线导航| 日日夜夜精品网站| 97久久久精品综合88久久| 日韩精品电影在线观看| 国产午夜精品在线观看| 在线精品视频小说1| 国产精品美女久久久久av福利| 久久不见久久见免费视频1| 中文字幕一区二区三区av| 欧美精品久久一区二区三区| 免费99视频|