【mybatis源码学习】mybatis的sql语句映射
一、重要的接口和类
org.apache.ibatis.scripting.LanguageDriver //语言驱动
org.apache.ibatis.scripting.xmltags.XMLLanguageDriver //xml语言驱动,Configuration默认的语言驱动(在new configuration对象时,注入的语言驱动)
org.apache.ibatis.scripting.defaults.RawLanguageDriver//未加工的语言驱动
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//静态的sqlSources
org.apache.ibatis.scripting.xmltags.SqlNode //动态sql节点
二、sql树
1、sql语句的构建,是基于建造者模式。
org.apache.ibatis.scripting.xmltags.XMLScriptBuilder//构建sql语句
2、sql树
三、重要接口的作用
1、LanguageDriver
制造:SqlSource
制造:ParameterHandler
2、SqlSource
制造:BoundSql
3、SqlNode
处理自己类型的sql节点,并根据当前请求的参数生成自己类型sql片段,拼接至DynamicContext
4、DynamicContext
处理当前请求,将不同类型SqlNode处理完的sql片段,拼接成一个完整的sql语句
四、生成sql语句
第一阶段
在项目初始化的时候,解析mapper.xml文件
基于构建者模式,使用XMLStatementBuilder生成MappedStatement
MappedStatement依赖DynamicSqlSource或RawSqlSource(依赖LanguageDriver生成)
第二阶段
在项目运行过程中的时候,从MappedStatement中获取DynamicSqlSource或RawSqlSource
基于构建者模式,使用SqlSourceBuilder生成StaticSqlSource,再从StaticSqlSource中生成BoundSql
最新文章
- 中文Locale
- php服务端写日志文件
- Do less things
- 一次MVVM+ReactiveCocoa实践
- 教您如何使用SQL中的SELECT LIKE like语句
- Sublime Text 3 配置浏览器预览路径 localhost
- Tcp 数据对象传输接口对象设计
- Oracle中sign函数和decode函数的使用
- C#操作Xml:使用XmlWriter写Xml
- 深入理解line-height
- mysql的读写分离
- mysql的一点小错误
- css图片根据div宽高比例自适应
- Android学习之基础知识五—编写聊天界面
- 校内模拟赛 旅行(by NiroBC)
- Hadoop Mapreduce 案例 wordcount+统计手机流量使用情况
- es6(16)--Decorator
- MySql数据类型范围
- javascript中的this到底指什么?
- nginx keepalive 高可用
热门文章
- VS2017 密钥
- Node: 通过Console打印日志 (Log Message via Console)
- maven学习笔记一(认识maven)
- ArcGIS pro 发布地图服务(一)动态地图服务
- SQL进阶系列之4HAVING字句的力量
- Relief 过滤式特征选择
- 使用CefSharp在C#访问网站,支持x86和x64
- test20190925 老L
- How Open Source Became The Default Business Model For Software
- Bootstrap内辅助类,响应式工具,组件的个人总结