mybatis重要組件

mybatis重要組件

  1. Configuration 類(lèi)是用于管理MyBatis全局配置文件的關(guān)系類(lèi)

    • Environment->DataSource
    • Map<String, MappedStatement> mappedStatements
  2. SqlSessionFactory

    • SqlSessionFactory是Session的管理工廠(chǎng)接口项炼,用于開(kāi)啟SqlSession
  3. SqlSession SqlSession中包含了許多面向開(kāi)發(fā)者的調(diào)用方法,如selectOne()剿涮、selectList()浸赫、delete()话浇、update()等方法外恕。

    • SqlSessionTemplate
    • DefaultSqlSession
  4. MappedStatement MappedStatement是Mapper.xml配置文件的封裝對(duì)象,其中包含SQL語(yǔ)句(SqlSource)午乓、輸入?yún)?shù)(ParameterMap)

  5. StatementHandler StatementHandler接口具體操作數(shù)據(jù)庫(kù)相關(guān)的Handler,提供query()闸准、getBoundSql()等方法益愈。

  6. ResultHandler ResultHandler接口用于操作數(shù)據(jù)庫(kù)返回結(jié)果。

Executor

  • CachingExecutor
  • BaseExecutor
    • SimpleExecutor

      • 簡(jiǎn)單執(zhí)行器夷家,是MyBatis中默認(rèn)使用的執(zhí)行器蒸其,每執(zhí)行一次update或select,就開(kāi)啟一個(gè)Statement對(duì)象库快,用完就直接關(guān)閉Statement對(duì)象(可以是Statement或者是PreparedStatment對(duì)象)
    • BatchExecutor

      • 批處理執(zhí)行器摸袁,用于將多個(gè)SQL一次性輸出到數(shù)據(jù)庫(kù)
    • ReuseExcutor

      • 可重用執(zhí)行器,這里的重用指的是重復(fù)使用Statement义屏,它會(huì)在內(nèi)部使用一個(gè)Map把創(chuàng)建的Statement都緩存起來(lái)靠汁,每次執(zhí)行SQL命令的時(shí)候,都會(huì)去判斷是否存在基于該SQL的Statement對(duì)象闽铐,如果存在Statement對(duì)象并且對(duì)應(yīng)的connection還沒(méi)有關(guān)閉的情況下就繼續(xù)使用之前的Statement對(duì)象蝶怔,并將其緩存起來(lái)。因?yàn)槊恳粋€(gè)SqlSession都有一個(gè)新的Executor對(duì)象兄墅,所以我們緩存在ReuseExecutor上的Statement作用域是同一個(gè)SqlSession踢星。

      org.mybatis.spring.SqlSessionTemplate#selectList
      org.apache.ibatis.session.defaults.DefaultSqlSessionFactory#openSessionFromDataSource
      //創(chuàng)建Executor和DefaultSqlSession
      org.apache.ibatis.session.Configuration#newExecutor

StatementHandler

  • RoutingStatementHandler
  • BaseStatementHandler
    • 它本身是一個(gè)抽象類(lèi),用于簡(jiǎn)化StatementHandler 接口實(shí)現(xiàn)的難度察迟,屬于適配器設(shè)計(jì)模式體現(xiàn)斩狱,它主要有三個(gè)實(shí)現(xiàn)類(lèi):
    • SimpleStatementHandler
      • java.sql.Statement對(duì)象創(chuàng)建處理器,管理 Statement 對(duì)象并向數(shù)據(jù)庫(kù)中推送不需要預(yù)編譯的SQL語(yǔ)句扎瓶。
    • PreparedStatementHandler
      • java.sql.PrepareStatement對(duì)象的創(chuàng)建處理器所踊,管理Statement對(duì)象并向數(shù)據(jù)中推送需要預(yù)編譯的SQL語(yǔ)句。
    • CallableStatementHandler
      • java.sql.CallableStatement對(duì)象的創(chuàng)建處理器概荷,管理 Statement 對(duì)象并調(diào)用數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程秕岛。

在創(chuàng)建 SimpleStatementHandler PreparedStatementHandler CallableStatementHandler調(diào)用父類(lèi)構(gòu)造方法 BaseStatementHandler 創(chuàng)建了 ParameterHandler ResultSetHandler

protected BaseStatementHandler(Executor executor, MappedStatement mappedStatement, Object parameterObject, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql){
    // ....
    //構(gòu)建parameterHandler
    this.parameterHandler = configuration.newParameterHandler(mappedStatement, parameterObject, boundSql);
    //構(gòu)建resultSetHandler
    this.resultSetHandler = configuration.newResultSetHandler(executor, mappedStatement, rowBounds, parameterHandler, resultHandler, boundSql);

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市误证,隨后出現(xiàn)的幾起案子继薛,更是在濱河造成了極大的恐慌,老刑警劉巖愈捅,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遏考,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蓝谨,警方通過(guò)查閱死者的電腦和手機(jī)灌具,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)譬巫,“玉大人咖楣,你說(shuō)我怎么就攤上這事÷簦” “怎么了诱贿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)咕缎。 經(jīng)常有香客問(wèn)我珠十,道長(zhǎng),這世上最難降的妖魔是什么凭豪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任宵睦,我火速辦了婚禮,結(jié)果婚禮上墅诡,老公的妹妹穿的比我還像新娘壳嚎。我一直安慰自己,他們只是感情好末早,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布烟馅。 她就那樣靜靜地躺著,像睡著了一般然磷。 火紅的嫁衣襯著肌膚如雪郑趁。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天姿搜,我揣著相機(jī)與錄音寡润,去河邊找鬼捆憎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛梭纹,可吹牛的內(nèi)容都是我干的躲惰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼变抽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼础拨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起绍载,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诡宗,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后击儡,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體塔沃,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年阳谍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芳悲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡边坤,死狀恐怖名扛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茧痒,我是刑警寧澤肮韧,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站旺订,受9級(jí)特大地震影響弄企,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜区拳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一拘领、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧樱调,春花似錦约素、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至乞而,卻和暖如春送悔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工欠啤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荚藻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓洁段,卻偏偏與公主長(zhǎng)得像应狱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子眉撵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349