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...