Sharding-jdbc核心流程以及源碼解析

基本說明

sharding-jdbc絕對沒有破壞mybatis的工作片习,相反是和其相輔相成的

建議先看下mybatis的核心流程和原理.也可以參考我的另一篇博客
http://www.reibang.com/p/1e26ed5464e3

mybatis最終也是生成sql,使用jdbc連接進行訪問痪宰,分庫分表最好的時刻就是在jdbc進行訪問前拿到sql進行表和庫的替換行疏,sharding-jdbc也是這么來弄的匆光,所以我們才會一開始從datasouce就進行替換。
我們使用ShardingDataSource來創(chuàng)建DataSouce

sharding-jdbc核心流程

SQL 解析 => 執(zhí)行器優(yōu)化 => SQL 路由 => SQL 改寫 => SQL 執(zhí)行 => 結(jié)果歸并酿联。

sharding-jdbc和mybatis的接入點

接入點涉及核心方法
org.apache.ibatis.executor.SimpleExecutor#prepareStatement

可以看下下面相關(guān)注釋(自己加的)
private Statement prepareStatement(StatementHandler handler, Log statementLog) throws SQLException {
    Statement stmt;
    // 根據(jù)數(shù)據(jù)源類型為SpringShardingDataSource獲取到ShardingConnection
    Connection connection = getConnection(statementLog);
    // 根據(jù)ShardingConnection獲取到ShardingPreparedStatement
    stmt = handler.prepare(connection, transaction.getTimeout());
    handler.parameterize(stmt);
    return stmt;
  }

源碼分析

具體的分析過程可以參考一位大佬的文章
http://www.reibang.com/p/8697f62837a2

基本執(zhí)行流程
  • 1终息、從dataSource中獲取Connection對象夺巩,dataSource是SpringShardingDataSource對象。
  • 2周崭、通過connection準(zhǔn)備PreparedStatement對象劲够。(ShardingPreparedStatement)
  • 3、設(shè)置preparedStatement的參數(shù)休傍。
  • 4、執(zhí)行preparedStatement的executeUpdate蹲姐。
  • 5磨取、處理ResultSet對象。
下面是源碼斷點調(diào)試圖
sharding-jdbc-v2.gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柴墩,一起剝皮案震驚了整個濱河市忙厌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌江咳,老刑警劉巖逢净,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異歼指,居然都是意外死亡爹土,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門踩身,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胀茵,“玉大人,你說我怎么就攤上這事挟阻∏砟铮” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵附鸽,是天一觀的道長脱拼。 經(jīng)常有香客問我,道長坷备,這世上最難降的妖魔是什么熄浓? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮省撑,結(jié)果婚禮上玉组,老公的妹妹穿的比我還像新娘。我一直安慰自己丁侄,他們只是感情好惯雳,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸿摇,像睡著了一般石景。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天潮孽,我揣著相機與錄音揪荣,去河邊找鬼。 笑死往史,一個胖子當(dāng)著我的面吹牛仗颈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播椎例,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挨决,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了订歪?” 一聲冷哼從身側(cè)響起脖祈,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刷晋,沒想到半個月后盖高,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡眼虱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年喻奥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捏悬。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡映凳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出邮破,到底是詐尸還是另有隱情诈豌,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布抒和,位于F島的核電站矫渔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏摧莽。R本人自食惡果不足惜庙洼,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镊辕。 院中可真熱鬧油够,春花似錦、人聲如沸征懈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卖哎。三九已至鬼悠,卻和暖如春删性,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背焕窝。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工蹬挺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人它掂。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓巴帮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親虐秋。 傳聞我的和親對象是個殘疾皇子榕茧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容