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