zoukankan      html  css  js  c++  java
  • 关于MyBatis的运行原理(转载)

    1、获取sqlSessionFactory对象:
      解析文件的每一个信息保存在Configuration中,返回包含Configuration的DefaultSqlSessionFactory;
      注意:【MappedStatement】:代表一个增删改查的详细信息

     2、获取sqlSession对象
       返回一个DefaultSQlSession对象,包含Executor和Configuration;
      这一步会创建Executor对象;

     3、获取接口的代理对象(MapperProxy)
       getMapper,使用MapperProxyFactory创建一个MapperProxy的代理对象
       代理对象里面包含了,DefaultSqlSession(Executor)
     4、执行增删改查方法

     总结:
       1、根据配置文件(全局,sql映射)初始化出Configuration对象
       2、创建一个DefaultSqlSession对象,他里面包含Configuration以及Executor(根据全局配置文件中的defaultExecutorType创建出对应的Executor)
       3、DefaultSqlSession.getMapper():拿到Mapper接口对应的MapperProxy;
       4、MapperProxy里面有(DefaultSqlSession);
       5、执行增删改查方法:
         1)、调用DefaultSqlSession的增删改查(Executor);
         2)、会创建一个StatementHandler对象。
         (同时也会创建出ParameterHandler和ResultSetHandler)
         3)、调用StatementHandler预编译参数以及设置参数值;
         使用ParameterHandler来给sql设置参数
         4)、调用StatementHandler的增删改查方法;
         5)、ResultSetHandler封装结果
     注意:
     四大对象(Executor、ParameterHandler、ResultSetHandler、StatementHandler)

    每个创建的时候都有一个interceptorChain.pluginAll(parameterHandler);

  • 相关阅读:
    Mysql 主备原理
    Mysql-innodb日志写入时机
    Innodb 架构
    Reactor/Proactor
    select,poll,epoll,IO多路复用进化史
    从硬件+操作系统的角度解释为什么操作系统的IO单位是磁盘块
    Dubbo 核心功能在业务架构中的体现
    Mysql-Innodb 锁总结
    第一阶段冲刺三
    第一阶段冲刺二
  • 原文地址:https://www.cnblogs.com/dreampig/p/9359060.html
Copyright © 2011-2022 走看看