Mybatis深入原始碼分析之MapperProxy

2021-09-24 09:52:05 字數 1611 閱讀 6926

try  catch (exception e)
類圖分析:

} //生成**實現類

@suppresswarnings("unchecked")

} public t newinstance(sqlsession sqlsession) }

private static final long serialversionuid = -6424540398559729838l;

private final sqlsession sqlsession;

/**/

this.sqlsession = sqlsession;

this.methodcache = methodcache;

} @override

public object invoke(object proxy, method method, object args) throws throwable catch (throwable t)

}//將method存入快取

//執行sql

} //將執行方法存入快取}}}

//乙個內部封 封裝了sql標籤的型別 insert update delete select

private final sqlcommand command;

//乙個內部類 封裝了方法的引數資訊 返回型別資訊等

private final methodsignature method;

this.method = new methodsignature(config, method);

} /**

* 這個方法是對sqlsession的包裝,對應insert、delete、update、select四種操作

*/public object execute(sqlsession sqlsession, object args) else if (sqlcommandtype.update == command.gettype()) else if (sqlcommandtype.delete == command.gettype()) else if (sqlcommandtype.select == command.gettype()) else if (method.returnsmany()) else if (method.returnsmap()) else

} else

//如果返回值為空 並且方法返回值型別是基礎型別 並且不是void 則丟擲異常

if (result == null && method.getreturntype().isprimitive() && !method.returnsvoid())

return result;

}}總結:

最終類圖:

Mybatis 原始碼分析

mybatis解析 2 sqlsessionfactorybean 繼承了 initializingbean 介面,在bean解析的finishbeanfactoryinitialization 的方法對 initializingbean介面中的 afterpropertiesset 方法進行呼叫,...

Mybatis原始碼分析

我們都知道mybatis它是一款優秀的持久層框架,它支援定製化sql 儲存過程以及高階對映,幫我們節省了許多時間與精力,今天我們主要來對mybatis的底層原始碼進行分析,主要是以下4行 首先呼叫resources中的單個string引數的getresuorceasstream string res...

MyBatis 原始碼分析

sqlsession inte ce,代表乙個連線資料庫的會話,提供了乙個預設的 defaultsqlsession sqlsessionfactory inte ct,建立 sqlsessionfactory 的工廠,提供了預設的 defaultsqlsessionfactory建立 defaul...