欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

一圖讀懂mybatis查詢接口的源碼流程-創(chuàng)新互聯(lián)

請?zhí)砑訄D片描述

站在用戶的角度思考問題,與客戶深入溝通,找到城步網(wǎng)站設(shè)計與城步網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋城步地區(qū)。

圖比較大:如果看著比較糊的話,可以下載高清圖:https://download.csdn.net/download/langwuzhe/87376216

第一步:創(chuàng)建 StatementHandler、ParameterHandler、ResultSetHandler-----------(三劍客的新生)
  1. 創(chuàng)建StatementHandler對象
    • 具體創(chuàng)建的實(shí)現(xiàn)類是PreparedStatementHandler,而且被RoutingStatementHandler包裹,便于識別具體的StatementHandler對象。
  2. 在創(chuàng)建 StatementHandler 對象時,會同時super()父類BaseStatementHandler的構(gòu)造器。BaseStatementHandler構(gòu)造器會把ParameterHandlerResultSetHandler都創(chuàng)建出來
    • ParameterHandler 、ResultSetHandler 這兩個Handler 是在StatementHandler的實(shí)現(xiàn)類中創(chuàng)建出來的,所以當(dāng)要調(diào)用 這兩個Handler 的方法時需要去 StatementHandler 的實(shí)現(xiàn)中尋找這兩個Hander 的引用。所以就會看見上圖中 設(shè)置參數(shù) 和 整理數(shù)據(jù)庫返回數(shù)據(jù)時依然會看見需要經(jīng)過 StatementHandler的實(shí)現(xiàn)類PrepareStatementHandler
第二步:執(zhí)行 connection.prepareStatement,返回 statement 對象---------(StatementHandler)
  1. 經(jīng)過一系列流轉(zhuǎn),具體是在 StatementHandler 的實(shí)現(xiàn)類中執(zhí)行的connection.prepareStatement
  2. connection.prepareStatement(sql)時,由于connection 對象被種了動態(tài)代理的蠱。所以執(zhí)行connection.prepareStatement(sql)時,會先進(jìn)入 connection的代理對象 ConnectionLogger中執(zhí)行invoke方法打印sql日志
第三步:往sql中設(shè)置參數(shù)。具體值 替換 ? 問號 -------------- (ParameterHandler)
  1. 把第二步的statement對象傳出來用來往sql設(shè)置參數(shù)
  2. 使用具體參數(shù) 替換 ? 問號時,是在ParameterHandler的實(shí)現(xiàn)類DefaultParameterHandler進(jìn)行的
第四步:執(zhí)行 statement.execute() ------------------------(StatementHandler)
  1. 執(zhí)行execute()方法是在 StatementHandler 的實(shí)現(xiàn)類 PreparedStatementHandler 中執(zhí)行的。
  2. 由于PreparedStatement對象被種了動態(tài)代理的蠱,所以執(zhí)行 他的execute()方法,會先進(jìn)入到PreparedStatement的代理的對象PreparedStatementLogger打印入?yún)⒌娜罩尽?/mark>
第五步:數(shù)據(jù)庫返回數(shù)據(jù)結(jié)果映射。---------------------------(ResultSetHandler)
  1. 結(jié)果映射都是在 ResultSetHandler 的實(shí)現(xiàn)類 DefaultResultSetHandler 中進(jìn)行的。

  2. 從 statement中取出ResultSet對象會把他放到ResultSetWrapper中,ResultSetWrapper是對ResultSet的補(bǔ)充增強(qiáng)

  3. 在映射的過程中,還會創(chuàng)建 ResultHandler對象,他的實(shí)現(xiàn)類是DefaultResultHandler。這個只是方法返回時攜帶數(shù)據(jù)用的,無需過多關(guān)注,但是要區(qū)分ResultSetHandler 和 ResultHandler 長的很像,容易看花眼。

注:

? 第一、二、三 步 都是在 Executor 中發(fā)生的。第四、五步 是在 StatementHandler 中發(fā)生的。
**

在這里插入圖片描述

另外在我的組件庫中,對mybatis源碼進(jìn)行了詳盡的注釋,且可以對項目進(jìn)行install,然后在ron-man-mybatis1項目中 src/main/java/iron/man/lyf/ironmanmybatis1/run_test/MybatisQuickStart.java 進(jìn)行運(yùn)行 對mybatis源碼進(jìn)行debug查看運(yùn)行過程,歡迎大家下載指正。如果您覺得幫助到您麻煩給個贊。我的組件庫

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁標(biāo)題:一圖讀懂mybatis查詢接口的源碼流程-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://www.chinadenli.net/article26/dpjgjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)外貿(mào)建站品牌網(wǎng)站制作用戶體驗企業(yè)建站網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司