MyBatis六运行原理

来源:互联网 发布:linux 桌面 命令 编辑:程序博客网 时间:2024/06/07 23:46
MyBatis的运行分为两大部分:
一:读取配置文件缓存到Configuration对象
二:SqlSession的执行过程


构建SqlSessionFactory
SqlSessionFactory最重要的功能就是提供创建MyBatis的核心接口SqlSession
通过XMLConfigBuilder解析配置的XML文件,创建出Configuration,Configuration对象创建SqlSessionFactory对象,MyBatis中SqlSessionFactory是一个接口
而不是实现类,但是提供了一个默认的实现类DefaultSqlSessionFactory。Configuration是一个单例对象。


映射器的内部组成,3个部分
MappedStatement
保存映射器的节点信息
SqlSource
提供BoundSql对象
BoundSql
建立SQL和参数的地方,SQL、parameterObject、parameterMappings三个属性
parameterObject是参数本身,根据传递进来的参数类型存储为不同类型
parameterMappings 是List,是对参数的描述,一般不需要去改变这个对象
SQL就是我们书写在映射器里面的一条SQL


SqlSession的运行过程
Mybatis为什么用Mapper接口就可以运行SQL,因为映射器的XML文件的命名空间对应的便是这个接口的全路径,它根据全路径和方法名称就能和代理类绑定起来,
通过动态代理技术就可以让接口跑起来了


SqlSession四大对象
Executor:执行器,由它调度StatementHandler、Parameterhandler、ResultHandler等来执行对应的SQL
ParameterHandler:用于对SQL参数的处理
ResultHandler:用于最后数据集(ResultSet)的封装处理
StatementHandler:使用数据库的Statement(PreparedStatement)执行操作。


Executor,执行器
MyBatis 中有3中选择器,
SIMPLE(默认)、REUSE、BATCH
Executor会先调用Statementhandlerde prepare()方法预编译SQL语句,然后用parameterize()方法启用ParameterHandler设置参数完成预编译,跟着执行查询,
使用ResultHandler封装结果返回给调用者。
0 0
原创粉丝点击