org.apache.ibatis.scripting.LanguageDriver //語言驅動
org.apache.ibatis.scripting.xmltags.XMLLanguageDriver //xml語言驅動,Configuration默認的語言驅動(在new configuration對象時,注入的語言驅動)
org.apache.ibatis.scripting.defaults.RawLanguageDriver//未加工的語言驅動sql
org.apache.ibatis.mapping.SqlSource //將mapper.xml中的sql語句解析成該對象
org.apache.ibatis.scripting.xmltags.DynamicSqlSource //動態sql的實現類,內部依賴了sql樹sqlNode
org.apache.ibatis.scripting.defaults.RawSqlSource//不徹底的RawSqlSource
org.apache.ibatis.builder.StaticSqlSource//靜態的sqlSourcesapache
org.apache.ibatis.scripting.xmltags.SqlNode //動態sql節點app
org.apache.ibatis.scripting.xmltags.XMLScriptBuilder//構建sql語句ui
製造:SqlSource3d
製造:ParameterHandlerxml
製造:BoundSql對象
處理本身類型的sql節點,並根據當前請求的參數生成本身類型sql片斷,拼接至DynamicContextblog
處理當前請求,將不一樣類型SqlNode處理完的sql片斷,拼接成一個完整的sql語句接口
在項目初始化的時候,解析mapper.xml文件ip
基於構建者模式,使用XMLStatementBuilder生成MappedStatement
MappedStatement依賴DynamicSqlSource或RawSqlSource(依賴LanguageDriver生成)
在項目運行過程當中的時候,從MappedStatement中獲取DynamicSqlSource或RawSqlSource
基於構建者模式,使用SqlSourceBuilder生成StaticSqlSource,再從StaticSqlSource中生成BoundSql