mybatis源码解读之整体概念(准备阶段)

写在前面: 一切,源于喜欢。选择mybatis作为我第一个学习的框架,其中的设计模式的运用,以及整体架构都是有必要学习的。于是乎记录下自己的学习过程以及自己的思考结晶。

环境准备

  1. mybatis 3.5.0-SNAPSHOT
  2. idea
  3. jdk 1.8

mybatis整体文件结构介绍

目录一
目录二

在mybatis的源码中与 annotations 和 binding 同层次的包一共有二十个。

今天我要解读的是这些包下面存放的类的作用,这是比较基础的地方,虽然类名方法名都很清晰,但还是有必要简单聊一下的,因为不了解,完全无法阅读,我们还要做一些准备工作的。

org.apache.ibatis.session

  1. 这个包里面有四个接口。

    ResultContext | ResultHandler | Sqlsession | SqlsessionFactory
    官网上描述:
    sqllsession
    意思就是说,这个Sqlsession是使用mybatis的主要接口,它能够执行命令,得到mappers更能够管理事务;sqlsession是sqlssesionFactory创建的,这个sqlsessionFactory又是由sqlsessionFactoryBuilder根据我们的配置创建出来的。
    sqlSession在mybatis中有两种实现,分别DefaultSqlSession和DefaultSqlSessionFactory
    sqlsession实现

  2. 然后这个包里面比较重要的就是Configure类了。

    不难从类名可以看出,这个类主要就是配置信息类,操作mybatis的所有配置都存放在这个类里面了。
    配置类

org.apache.ibatis.mapping


  1. 这个包里面的东西,全对应着xml文件里面的标签,是一种映射的关系。

mapping
这里使用了动态代理模式,使用jdk代理实现。

org.apache.ibatis.executor


  1. 关于 Executor 接口,他是MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护,这就很重要了。其实现类可由下图可见。

执行器

org.apache.ibatis.binding


  1. 这个包呈现的是一种绑定功能,比如生成一种代理的关系或者注册一个东西。

binding
这里涉及到设计模式,基于jdk的动态代理

关于mybatis还有缓存等,现在先记录下目前了解的东西。

猜你喜欢

转载自blog.csdn.net/qq_38727626/article/details/81482624