日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

最近研究了一下MyBatis,給大家磕叨磕叨,MyBatis框架的核心功能其實不難,無非就是動態代理和jdbc的操作,難的是寫出來可擴展,高內聚,低耦合的規范的代碼。本文完成的Mybatis功能比較簡單,代碼還有許多需要改進的地方,大家可以結合Mybatis源碼去動手完善。
一、Mybatis框架流程簡介

 

在手寫自己的Mybatis框架之前,我們先來了解一下Mybatis,它的源碼中使用了大量的設計模式,閱讀源碼并觀察設計模式在其中的應用,才能夠更深入的理解源碼。更多關于mybatis源碼解讀分析:https://www.yoodb.com/middleware/mybatis/architecture-design.html

我們對上圖進行分析總結:

1、mybatis的配置文件有2類

a)mybatisconfig.xml,配置文件的名稱不是固定的,配置了全局的參數的配置,全局只能有一個配置文件。

b)MApper.xml 配置多個statemement,也就是多個sql,整個mybatis框架中可以有多個Mappe.xml配置文件。

2、通過mybatis配置文件得到SqlSessionFactory

3、通過SqlSessionFactory得到SqlSession,用SqlSession就可以操作數據了。

4、SqlSession通過底層的Executor(執行器),執行器有2類實現:

a) 基本實現

b)帶有緩存功能的實現

5、MappedStatement是通過Mapper.xml中定義statement生成的對象。

6、參數輸入執行并輸出結果集,無需手動判斷參數類型和參數下標位置,且自動將結果集映射為JAVA對象

a)HashMap,KV格式的數據類型

b)Java的基本數據類型

c)POJO,java的對象

二、梳理自己的Mybatis的設計思路

根據上文Mybatis流程,我簡化了下,分為以下步驟:

1.讀取xml文件,建立連接

從圖中可以看出,MyConfiguration負責與人交互。待讀取xml后,將屬性和連接數據庫的操作封裝在MyConfiguration對象中供后面的組件調用。本文將使用dom4j來讀取xml文件,它具有性能優異和非常方便使用的特點。

2.創建SqlSession,搭建Configuration和Executor之間的橋梁

我們經常在使用框架時看到Session,Session到底是什么呢?一個Session僅擁有一個對應的數據庫連接。類似于一個前段請求Request,它可以直接調用exec(SQL)來執行SQL語句。從流程圖中的箭頭可以看出,MySQLSession的成員變量中必須得有MyExecutor和MyConfiguration去集中做調配,箭頭就像是一種關聯關系。我們自己的MySqlSession將有一個getMapper方法,然后使用動態代理生成對象后,就可以做數據庫的操作了。

3.創建Executor,封裝JDBC操作數據庫

Executor是一個執行器,負責SQL語句的生成和查詢緩存(緩存還沒完成)的維護,也就是jdbc的代碼將在這里完成,不過本文只實現了單表,有興趣的同學可以嘗試完成多表。面試寶典:https://www.yoodb.com

4.創建MapperProxy,使用動態代理生成Mapper對象

我們只是希望對指定的接口生成一個對象,使得執行它的時候能運行一句sql罷了,而接口無法直接調用方法,所以這里使用動態代理生成對象,在執行時還是回到MySqlSession中調用查詢,最終由MyExecutor做JDBC查詢。這樣設計是為了單一職責,可擴展性更強。

三、實現自己的Mybatis

工程文件及目錄:

首先,新建一個maven項目,在pom.xml中導入以下依賴:

創建我們的數據庫xml配置文件:

然后在數據庫創建test庫,執行如下SQL語句:

創建User實體類,和UserMapper接口和對應的xml文件:

基本操作配置完成,接下來我們開始實現MyConfiguration:

用面向對象的思想設計讀取xml配置后:

接下來實現我們的MySqlSession,首先的成員變量里得有Excutor和MyConfiguration,代碼的精髓就在getMapper的方法里。

緊接著創建Executor和實現類:

MyExecutor中封裝了JDBC的操作:

MyMapperProxy代理類完成xml方法和真實方法對應,執行查詢:

到這里,就完成了自己的Mybatis框架,我們測試一下:

執行結果:

查詢一個不存在的用戶試試:

到這里我們就大功告成了!

 

作者:K'illCode blog.csdn.NET/Dome_/article/details/86525476

 

公眾號“Java精選”所發表內容注明來源的,版權歸原出處所有(無法查證版權的或者未注明出處的均來自網絡,系轉載,轉載的目的在于傳遞更多信息,版權屬于原作者。如有侵權,請聯系,筆者會第一時間刪除處理!

最近有很多人問,有沒有讀者交流群!加入方式很簡單,公眾號Java精選,回復“加群”,即可入群!

(微信小程序):3000+道面試題,包含Java基礎、并發、JVM、線程、MQ系列、redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架構設計等,在線隨時刷題!

------ 特別推薦 ------

特別推薦:專注分享最前沿的技術與資訊,為彎道超車做好準備及各種開源項目與高效率軟件的公眾號,「大咖筆記」,專注挖掘好東西,非常值得大家關注。點擊下方公眾號卡片關注

文章有幫助的話,點在看,轉發吧!

分享到:
標簽:Mybatis
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定