Dapper原始碼講解

2022-01-31 23:18:11 字數 1337 閱讀 5111

主要講解:execute方法的呼叫過程,

public static int execute(this idbconnection cnn, string sql, object param = null, idbtransaction transaction = null, int? commandtimeout = null, commandtype? commandtype = null)

此方法**:

內部呼叫了executeimpl方法

上圖,數字修正為陣列

下面講解executecommand方法

上面的**中一共出現兩個類identity(標識),cacheinfo(快取資訊)

先說identity這個類,是用來對commandtext,commandtype,cnn,param的乙個封裝,用於唯一標識這些物件。為快取機制,提供乙個唯一標識。

identity = new identity(command.commandtext, command.commandtype, cnn, null, param.gettype(), null);

那麼我們再來看這個類cacheinfo,用identity,param,bool引數來構造。

info = getcacheinfo(identity, param, command.addtocache);

下面看它的建構函式:

我們接下來,檢視步驟3中的圈著的方法,是用來生成乙個無返回值的委託,引數是icommand和object

Dapper原始碼拼接引數問題

線上分了n張表,多表查詢sql使用where in方法。容易丟擲引數已經定義的異常。例如 parameter sqlparams111 has already been defined.問題 例子 test 01表和test 11表只包含兩個欄位自增id和addtime try var ids2 n...

Spring原始碼講解

spring註解方式的refresh中beanfactory.preinstantiatesingletons 過程 spring如果解決迴圈依賴問題,如何使用 快取。beanfactory.preinstantiatesingletons 初始化和例項化操作 迴圈beandefinitionnam...

Vue 原始碼流程講解

模組分析vue原始碼,原始碼版本2.6.9 場景1 初始化vue例項,渲染到頁面,點選handlechangeweight方法 watch computed methods 1,data初始化,weight設定為響應式時,有乙個dep儲存依賴,在其他變數獲取當前weigth時,收集其他變數的watc...