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);

  • 相关阅读:
    flask基础之jijia2模板使用基础(二)
    python之微信公众号开发(基本配置和校验)
    flask插件系列之SQLAlchemy基础使用
    python基础之常用的高阶函数
    服务器部署之nginx的配置
    python之gunicorn的配置
    python内置模块之unittest测试(五)
    python之celery使用详解一
    git服务器的简单搭建
    python模块分析之logging日志(四)
  • 原文地址:https://www.cnblogs.com/dreampig/p/9359060.html
Copyright © 2011-2022 走看看