zoukankan      html  css  js  c++  java
  • 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 

  • 相关阅读:
    Python pip离线部署
    Windows API 纳秒级别延迟
    基于Cython和内置distutils库,实现python源码加密(非混淆模式)
    boost.property_tree读取中文乱码问题
    Direct初始化三步曲
    分享一个电子发票信息提取工具(Python)
    关于&0x80
    给QT不规则窗口添加阴影
    waveout系列API实现pcm音频播放
    An application has made an attempt to load the C runtime library incorrectly.Please contact the application's support te
  • 原文地址:https://www.cnblogs.com/AllIhave/p/11794287.html
Copyright © 2011-2022 走看看