MyBatis的解析和运行原理

一、mybatis的运行分为两大部分

1、读取配置文件到缓存到configuration对象,用以创建SqlSessionFactory。

2、SqlSession的执行过程

二、构件SqlSessionFactory的过程

①通过XMLConfigBuilder解析配置的XML文件,读出配置参数,并将读取的数据存入Configuration类中。

②使用Configuration对象创建SqlSessionFactory。

1-1构建Configuration

作用:读取配置文件,包括基础配置的XML文件和映射器的XML文件

           初始化基础配置

           提供单例

          执行一些重要的对象方法,初始化配置对象

通过XMLConfigBuilder构建的。

1-2映射器的内部组成

一般而言,一个映射器是由三个部分组成的

①MappedStatement,它保存映射器的一个节点。包括我们配置的SQL、SQL的id、缓存信息、resultMap、parameterType、resultType、

languageDriver等重要配置内容。

②SqlSource,它是提供BoundSql对象的地方,它是MappedStatement的一个属性。

③BoundSql,它是建立sql和参数的地方。它有三个常用的属性:SQL、parameterObject、parameterMappings。(对BoundSql进行适当修改满足我们的需求)

    parameterObject为参数本身。

    parameterMappings,描述我们的参数;参数包括属性、名称、表达式、javaType、jdbcType、typeHandler等重要信息。                                                                       (PreparedStatement能够通过它找到parameterObject对象的属性并设置参数)

    sql,书写在映射器中的sql语句

三、SqlSession的运行过程

Mapper映射是通过动态代理实现的。Mapper的执行过程是通过Executor、StatementHandler、ParameterHandler和ResultHandler来完成数据库的操作和返回结果。

Executor,执行器,由他来调度StatementHandler、ParameterHandler、ResultHandler

StatementHandler,使用数据库的statement执行操作

ParameterHandler,Sql对参数的处理

ResultHandler,对最后的数据集的封装返回处理。

3-1执行器

mybatis将根据配置类型去确定你要创建三种执行器中的哪一种。BatchExecutor、ReuseExecutor、SimpleExecutor

根据Configuration来构建StatementHandler,调用StatementHandler的prepare()进行预编译和基础设置,然后通过StatementHandler的parameterize()来设置参数,resultHandler再组装查询结果返回给调用者完成一次查询。

3-2数据库会话器

StatementHandler也分为三种。 SimpleStatementHandler 、PreparedStatementHandler 、CallableStatementHandler 

 

posted @ 2019-11-04 20:01  AllIhave  阅读(154)  评论(0编辑  收藏  举报