# Mybatis 工作原理与源码分析(一)

Mybatis 工作原理与源码分析(一)

Mybatis简介

  • MyBatis是持久层框架,它支持自定义sql,存储过程,以及高级映射,Mybatis消除了Jdbc的获取结果集的工作,通过xml或者注解的方式,配置和映射原始类型

Mybatis框架工作原理图

在这里插入图片描述

工作原理解析
  • 通过SqlSessionFactoryBuildermybatis-config.xml配置文件来构建SqlSessionFactory****然后,SqlSessionFactory的实例直接开启一个SqlSession**,再通过SqlSession实例获得Mapper对象并运行Mapper映射的SQL语句,完成对数据库的CRUD和事务提交,之后关闭SqlSession
工作流程
  • 扫描mybatis-config.xml配置数据源、mapper映射文件等,Mybatis基于Xml文件配置生成Configuration和MappedStatement(包括动态sql,参数映射类型,结果映射配置)。

  • SqlSessionFactoryBuilder通过Configuration对象生成SqlSessionFactory用来开启SqlSession

  • SqlSession对象完成和数据库的交互:

    • 调用Api接口层中的方法(Mapper接口中的方法)。
    • SqlSession通过调用api的Statement ID找到对应的MappedStatement对象。
    • 通过Executor(负责动态SQL的生成和查询缓存的维护)将MappedStatement对象进行解析,sql参数转化、动态sql拼接,生成jdbc Statement对象。
    • Jdbc执行sql。
    • MappedStatement中的结果映射关系,将返回结果转化成HashMap、JavaBean等存储结构并返回。

MyBatis框架层次图

在这里插入图片描述

源码目录结构

在这里插入图片描述

  • 日志:org.apache.ibatis.logging.*

  • 异常:org.apache.ibatis.exceptions

  • 缓存:org.apache.ibatis.cache.

  • 解析:org.apache.ibatis.parsing

  • 类型处理器:org.apache.ibatis.type

  • IO:org.apache.ibatis.io

  • 反射:org.apache.ibatis.reflection.*

  • 数据源:org.apache.ibatis.datasource.*

  • 事物:org.apache.ibatis.transaction.*

  • 会话:org.apache.ibatis.session.*

  • JDBC单元测试工具:org.apache.ibatis.session

  • 构建:org.apache.ibatis.builder.*

  • 映射:org.apache.ibatis.mapping

  • 脚本:org.apache.ibatis.scripting.*

  • 注解:org.apache.ibatis.annotations

  • 绑定:org.apache.ibatis.binding

  • 执行器:org.apache.ibatis.binding.*

  • 插件:org.apache.ibatis.plugin

    未完待续。。。。

猜你喜欢

转载自blog.csdn.net/qq_37248504/article/details/108352168
今日推荐