mybatis 原始碼分析之初始化

2021-09-02 12:05:58 字數 2790 閱讀 9244

mybatis 的配置檔案解析又xmlconfigbuilder的parseconfiguration方法來完成,解析結果都存在configuration這個類中

private void parseconfiguration(xnode root)  catch (exception e) 

}

別名解析

private void typealiaseselement(xnode parent)  else 

} catch (classnotfoundexception e) }}

}public void registeralias(class type)

registeralias(alias, type);

}public void registeralias(string alias, class value)

}//存入hashmaplim

type_aliases.put(key, value);

}

外掛程式解析

private void pluginelement(xnode parent) throws exception 

}

z工廠物件解析

private void objectfactoryelement(xnode context) throws exception 

}

解析屬性

private void propertieselement(xnode context) throws exception 

if (resource != null) else if (url != null)

properties vars = configuration.getvariables();

if (vars != null)

parser.setvariables(defaults);

configuration.setvariables(defaults);

}}

解析mybatis引數

private void settingselement(xnode context) throws exception 

}configuration.setcacheenabled(booleanvalueof(props.getproperty("cacheenabled"), true));

configuration.setlazyloadingenabled(booleanvalueof(props.getproperty("lazyloadingenabled"), false));

configuration.setaggressivelazyloading(booleanvalueof(props.getproperty("aggressivelazyloading"), true));

configuration.setmultipleresultsetsenabled(booleanvalueof(props.getproperty("multipleresultsetsenabled"), true));

configuration.setusecolumnlabel(booleanvalueof(props.getproperty("usecolumnlabel"), true));

configuration.setusegeneratedkeys(booleanvalueof(props.getproperty("usegeneratedkeys"), false));

configuration.setdefaultexecutortype(executortype.valueof(stringvalueof(props.getproperty("defaultexecutortype"), "******")));

configuration.setdefaultstatementtimeout(integervalueof(props.getproperty("defaultstatementtimeout"), null));

}}

環境解析

private void environmentselement(xnode context) throws exception 

for (xnode child : context.getchildren()) }}

}

環境解析

rivate void environmentselement(xnode context) throws exception 

for (xnode child : context.getchildren()) }}

}

型別處理器解析

private void typehandlerelement(xnode parent) throws exception  else }}

}

if (parent != null) else if (url != null && resource == null) else }}

}public void parse()

parsependingchacherefs();

parsependingstatements();

} private void configurationelement(xnode context) catch (exception e)

}  

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