当前位置: 首页>编程语言>正文

springboot vue mybatis 技术路线图 springboot mybatis 原理

一、mybatis主要成员

  1、Configuration:

    a、 MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中

    b、可以理解为所有mybatis文件的集合

  2、SqlSession:

    a、作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能

    b、从中获取会话的连接

  3、Executor:

               a、MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护

    b、sql的执行器
  4、StatementHandler:

    a、封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数等
  5、ParameterHandler:

    a、负责对用户传递的参数转换成JDBC Statement 所对应的数据类型

    b、主要负责类型的转换

    c、这个用户可以自己定制
  6、ResultSetHandler:

    a、负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
  7、TypeHandler

    a、负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换
  8、MappedStatement

    a、MappedStatement维护一条<select|update|delete|insert>节点的封装

    b、mapper文件中的一个id对应一个该对象
  9、SqlSource

    a、负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回
  10、BoundSql

    a、表示动态生成的SQL语句以及相应的参数信息

  11、关系

     a、根据配置文件(全局的和sql映射文件)初始化Configuration对象

     b、Configuration初始化一个DefautSqlSessionFactory作为会话工厂

     c、Configuration创建sqlSession(内部包含configuration)

     d、Configuration中声明数据库的具体执行类,MapperProxy中通过反射调用执行类的具体方法。

     e、Executor的具体方法在执行前会构造MappedStatement做入参,然后从MappedStatement中抽离出BoundSql

     f、SqlSource根据入参构造BoundSql

     g、查询前StatementHandler将mappedstatement中的内容填充到BoundSql中。

     h、紧接着g,StatementHandler的parameterize方法会调用ParameterHandler并在其setParameters中使用TypeHandler对BoundSql中的占位符进行替换。

     i、ResultSetHandler和ParameterHandler一起声明,会对Statement返回结果进行处理

  12、其他

    a、Configuration中在构造parameterHandler,executor,ResultSetHandler等地方都有拦截器处理逻辑

    

    

springboot vue mybatis 技术路线图 springboot mybatis 原理,springboot vue mybatis 技术路线图 springboot mybatis 原理_流程图,第1张

 

二、关键流程

  1、构造一个会话工厂

  

springboot vue mybatis 技术路线图 springboot mybatis 原理,springboot vue mybatis 技术路线图 springboot mybatis 原理_封装_02,第2张

    a、最后穿创建的应该是DefaultSqlSessionFactory,不是DefaultSqlSession

    b、入口一般是spring等启动时调用,如spring中的MybatisAutoConfiguration类

  2、openSesion获取SqlSession对象

  

springboot vue mybatis 技术路线图 springboot mybatis 原理,springboot vue mybatis 技术路线图 springboot mybatis 原理_流程图_03,第3张

    a、openSession中创建了事务,会话和执行类    

b、SqlSession的实现类DefaultSqlSession便是具体的数据库操作类(可以增删改查),它的内部依赖configuration    

    c、数据源构造了事务,事务成全了数据库操作执行器executor

    e、executor构造时的type的来源

  3、getMapper获取到接口的代理对象

  

springboot vue mybatis 技术路线图 springboot mybatis 原理,springboot vue mybatis 技术路线图 springboot mybatis 原理_配置文件_04,第4张

     a、MapperFactoryBean的getObject()方法会调用上述流程

     b、session中的configuration中获取mapper

三、请求执行

  1、流程图

    

springboot vue mybatis 技术路线图 springboot mybatis 原理,springboot vue mybatis 技术路线图 springboot mybatis 原理_封装_05,第5张

  a、mapperproxy通过jdk的代理反射构成,其中会调用executor的实现类

四、总流程图

  1、流程图

  

springboot vue mybatis 技术路线图 springboot mybatis 原理,springboot vue mybatis 技术路线图 springboot mybatis 原理_流程图_06,第6张

   

springboot vue mybatis 技术路线图 springboot mybatis 原理,springboot vue mybatis 技术路线图 springboot mybatis 原理_封装_07,第7张

 

 

mybatis加载配置文件及应用原理解析


https://www.xamrdz.com/lan/5h61921825.html

相关文章: