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

  • 相关阅读:
    lusernews python写的类HN网站 | Python China
    找一个可以@user的gem。
    Language modeling meets inference networks
    play!framework,新一代ROR风格的fullstack framework
    少了unicontools是不行滴
    用纯CSS3绘制萌系漫画人物动态头像
    C#获取当前程序运行路径的方法集合
    LINQ简记(2):重要概念
    程序员新年要实现的10个愿望
    LINQ简记(1):基本语法
  • 原文地址:https://www.cnblogs.com/dreampig/p/9359060.html
Copyright © 2011-2022 走看看