mybatis總體架構以及執行流程

1、MyBatis簡介
MyBatis框架是一種輕量級的ORM框架,當下十分流行,配合Spring+Spring MVC組成SSM框架,可以勝任幾乎全部的web項目工程。java

MyBatis不一樣於Hibernate的最重要的地方就是SQL部分,MyBatis中你能夠本身編寫靈活的SQL代碼,而在Hibernate基本上將SQL代碼封裝起來的,幾乎不會用到程序員去編寫,這是Hibernate的優秀之處(簡化了程序開發),同時也是其病腳(沒法靈活開發)。程序員

MyBatis的輕量級是相對於Hibernate的重量級而言的,它並無徹底封裝,將SQL的編寫開放給程序員,雖然帶來了複雜性,可是同時也帶來了靈活性。而針對咱們程序員而言,徹底能夠憑藉技術來忽略這些複雜性,專一於其靈活性。
web

2、MyBatis的執行流程數據庫

在這裏插入圖片描述
Configuration.xml:該配置文件是MyBatis的全局配置文件,在這個文件中能夠配置諸多項目,可是通常項目中,並不會配置太多內容,經常使用的內容是別名設置,攔截器設置等,至於環境設置與Mapper映射文件的註冊會轉移到Spring配置文件中(SSM整合以後),而其他大部分的配置項都採用默認的配置。安全

XMLConfigBuilder:該類是XML配置構建者類,是用來經過XML配置文件來構建Configuration對象實例,構建的過程就是解析Configuration.xml配置文件的過程,期間會將從配置文件中獲取到的指定標籤的值逐個添加到以前建立好的默認Configuration對象實例中。服務器

Configuration:該類是MyBatis的配置類,建立這個類的目的就是爲了使用其對象做爲項目全局配置對象,這樣經過配置文件配置的信息能夠保存在這個配置對象中,而這個配置對象在建立好以後是保存在JVM的Heap內存中的,方便隨時讀取。否則每次須要配置信息的時候都要臨時從磁盤配置文件中獲取,代碼複用性差的同時,也不利於開發。session

SqlSessionFactoryBuilder:該類是SqlSessionFactory(會話工廠)的構建者類,以前描述的操做其實全是從這裏面開啓的,首先就是調用XMLConfigBuilder類的構造器來建立一個XML配置構建器對象,利用這個構建器對象來調用其解析方法parse()來完成Configuration對象的建立,以後以這個配置對象爲參數調用會話工廠構建者類中的build(Configuration config)方法來完成會話工廠對象的構建。app

SqlsessionFactory:該接口是會話工廠,是用來生產會話的工廠接口,DefaultSqlSessionFactory是其實現類,是真正生產會話的工廠類,這個類的實例的生命週期是全局的,它只會在首次調用時生成一個實例(單例模式),就一直存在直到服務器關閉。框架

openSession():在最後的build(Configuration config)方法中會返回一個DefaultSqlSessionFactory類的實例,這個類是MyBatis提供的默認會話工廠類,而咱們使用的也正是這個類中的來openSession()方法來完成SqlSession對象的建立。ui

SqlSession:該接口是會話,是項目與數據庫之間的會話,相似於客戶端與服務器之間的會話(session),這個SqlSession的生命週期是方法級的,由於他是非線程安全的,針對每一次數據庫訪問都要建立一個SqlSession,獲取到返回結果以後,這個SqlSession就會被廢棄。這區別於SqlSessionFactory的生命週期。

Executor:執行器接口,SqlSession會話是面向程序員的,而內部真正執行數據庫操做的倒是Executor執行器,能夠將Executor看做是面向MyBatis執行環境的,SqlSession就是門面貨,Executor纔是實幹家。經過SqlSession產生的數據庫操做,所有是經過調用Executor執行器來完成的。

StatementHandler:該類是Statement處理器,封裝了Statement的各類數據庫操做方法execute(),可見MyBatis其實就是將操做數據庫的JDBC操做封裝起來的一個框架,同時還實現了ORM罷了。

ResultSetHandler:結果集處理器,若是是查詢操做,一定會有返回結果,針對返回結果的操做,就要使用ResultSetHandler來進行處理,這個是由StatementHandler來進行調用的。這個處理器的做用就是對返回結果進行處理。

關注公衆號:java寶典
a

相關文章
相關標籤/搜索