国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 一篇文章帶你學習JAVA MyBatis底層原理

一篇文章帶你學習JAVA MyBatis底層原理

2021-12-14 13:33令狐前生 Java教程

近來想寫一個mybatis的分頁插件,但是在寫插件之前肯定要了解一下mybatis具體的工作原理吧,本文就詳細總結了MyBatis工作原理,,需要的朋友可以參考下

一、傳統JDBC的弊端

  • jdbc沒有連接池、操作數據庫需要頻繁創建和關聯鏈接,消耗資源很大。
  • 在java中,寫原生jdbc代碼,硬編碼不易維護(比如修改sql、或傳遞參數類型時、解析結果)。

二、mybatis介紹

MyBatis是一款優秀的持久層框架,它支持自定義SQL、存儲過程以及高級映射。MyBatis免除了幾乎所有的JDBC代碼以及設置參數和獲取結果集的工作。MyBatis可以通過簡單的XML或注解來配置和映射原始類型、接口和JavaPOJO(PlainOldJavaObjects,普通老式Java對象)為數據庫中的記錄

三、MyBatis架構圖

一篇文章帶你學習JAVA MyBatis底層原理

核心類解釋

SqlSessionFactoryBuilder:

這個類可以被實例化、使用和丟棄,一旦創建了 SqlSessionFactory,就不再需要它了。因此SqlSessionFactoryBuilder實例的最佳作用域是方法作用域(也就是局部方法變量)。你可以重用SqlSessionFactoryBuilder來創建多個 SqlSessionFactory實例,但最好還是不要一直保留著它,以保證所有的 XML 解析資源可以被釋放給更重要的事情。

SqlSessionFactory:

SqlSessionFactory一旦被創建就應該在應用的運行期間一直存在,沒有任何理由丟棄它或重新創建另一個實例。使用SqlSessionFactory的最佳實踐是在應用運行期間不要重復創建多次,多次重建SqlSessionFactory被視為一種代碼“壞習慣”。因此SqlSessionFactory的最佳作用域是應用作用域。有很多方法可以做到,最簡單的就是使用單例模式或者靜態單例模式。

SqlSession:

每個線程都應該有它自己的SqlSession實例。SqlSession的實例不是線程安全的,因此是不能被共享的,所以它的最佳的作用域是請求或方法作用域。絕對不能將SqlSession實例的引用放在一個類的靜態域,甚至一個類的實例變量也不行。也絕不能將SqlSession實例的引用放在任何類型的托管作用域中,如Servlet框架中的HttpSession。如果你現在正在使用一種Web框架,考慮將SqlSession放在一個和HTTP請求相似的作用域中。換句話說,每次收到HTTP請求,就可以打開一個SqlSession,返回一個響應后,就關閉它。這個關閉操作很重要,為了確保每次都能執行關閉操作,你應該把這個關閉操作放到finally塊中。

Executor:

Executor(執行器)接口有兩個實現類,其中BaseExecutor有三個繼承類分別是BatchExecutor(重用語句并執行批量更新),ReuseExecutor(重用預處理語句prepared statement,跟Simple的唯一區別就是內部緩存statement),SimpleExecutor(默認,每次都會創建新的statement)。

Mapped Statement:

用來存放我們SQL映射文件中的信息包括sql語句,輸入參數,輸出參數等等。一個SQL節點對應一個MappedStatement對象。

工作流程

首先解釋下兩個文件

mybatis-config.xml:全局配置文件,引入了數據源、事務等mybatis運行環境;

Mapper.xml:配置映射文件,配置sql結果集封裝類型、傳參類型;

1.解析配置文件(MyBatis-config.xml、Mapper.xml),MyBatis基于XML配置文件生成Configuration,和一個個MappedStatement(包括了參數映射配置、動態SQL語句、結果映射配置),其對應著<select | update | delete | insert>標簽項。

2.SqlSessionFactoryBuilder創建會話工廠SqlSessionFactory。

3.SqlSessionFactory創建會話SqlSession;

4.執行器將MappedStatement對象進行解析,sql參數轉化、動態sql拼接,生成jdbc Statement對象,使用Paramterhandler填充參數,使用statementHandler綁定參數。

5.JDBC執行sql,借助MappedStatement中的結果映射關系,使用ResultSetHandler將返回結果轉化成HashMap、JavaBean等存儲結構并返回。

6.關閉sqlsession會話。

四、自己通過加載xml配置走mybais流程實現例子

一篇文章帶你學習JAVA MyBatis底層原理

獲得代理映射器代碼(在MapperProxyFactory<T>):

  protected T newInstance(MapperProxy<T> mapperProxy) {
      return Proxy.newProxyInstance(this.mapperInterface.getClassLoader(), new Class[]{this.mapperInterface}, mapperProxy);
  }

參考資料:https://baijiahao.baidu.com/s?id=1666562082269776543&wfr=spider&for=pc

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!

原文鏈接:https://blog.csdn.net/u010132847/article/details/119976754

延伸 · 閱讀

精彩推薦
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
主站蜘蛛池模板: 国产98色在线 | 日韩 | 中文字幕亚洲一区二区三区 | 亚洲欧美视频 | 久久精品国产欧美亚洲人人爽 | 国精产品99永久一区一区 | 亚洲福利| 亚洲欧美在线观看 | 日韩精品一区不卡 | 欧美在线视频一区 | 亚洲男人在线天堂 | 极品美女销魂一区二区三区 | 国产成人综合av | 福利视频二区 | 日韩免费高清在线 | 日韩视频一区二区 | 欧美国产精品一区 | 日韩国产中文字幕 | 国产一区二区免费 | 国产精品一二三区视频出来一 | 久久精品二 | 亚洲一区二区免费视频 | 欧美激情精品久久久久 | 自由成熟xxxx色视频 | 日韩免费视频 | 综合久久久久 | 国产日产久久高清欧美一区 | 国产黄色a级毛片 | 美女超碰| 黄色直接看| 精品无人乱码一区二区三区 | 最近的中文字幕在线看视频 | 欧美日韩亚洲一区 | 亚洲精品一区二区三区在线 | 日韩欧美在线观看视频 | 综合网日韩| 91精品国产一区二区三区免费 | yellow视频在线 | 国产有码| 激情六月婷 | 日韩福利 | 欧美日韩精品一区二区三区蜜桃 |