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