跳至主要內容
总体架构设计

Mybatis 整体框架如下:

kJIdrO

接口层

MyBatis 和数据库的交互有两种方式:

  • 使用传统的 MyBatis 提供的 API;

  • 使用 Mapper 接口;

使用传统的 MyBatis 提供的 API

这是传统的传递 Statement Id 和查询参数给 SqlSession 对象,使用 SqlSession 对象完成和数据库的交互;MyBatis 提供了非常方便和简单的 API,供用户实现对数据库的增删改查数据操作,以及对数据库连接信息和 MyBatis 自身配置信息的维护操作。


九夏...大约 5 分钟it框架mybatis源码
流程简解

流程简解

/src/main/resources/mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 根标签 -->
<configuration>
    <properties>
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url"
                  value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF8&amp;useSSL=false&amp;autoReconnect=true"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </properties>

    <!-- 环境,可以配置多个,default:指定采用哪个环境 -->
    <environments default="test">
        <environment id="test">
            <!-- 事务管理器,JDBC类型的事务管理器 -->
            <transactionManager type="JDBC"/>
            <!-- 数据源,池类型的数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/> <!-- 配置了properties,所以可以直接引用 -->
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="TeacherMapper.xml"/>
    </mappers>
</configuration>

九夏...大约 2 分钟it框架mybatis源码
源码环境搭建

下载代码

git clone https://github.com/spring-projects/spring-framework.git

修改配置

  1. 注释掉settings.gradle中的include "spring-aspects"

九夏...大约 1 分钟it框架spring源码
包详解

包详解

transaction

背景知识

  • 工厂模式

讲解

这里并没有特别需要说的东西,只是基础的事务管理。但是这里很好的实现了transactiondatasource包的隔离,transaction通过datasource抽象出来的接口实现了业务隔离,事务管理器可以通过配置文件选择对应的数据源进行管理。


九夏...大约 6 分钟it框架mybatis源码
Spring 初始化流程

Spring 初始化流程

spring 的初始化本质为 ApplicationContext 对象的构建,这里通过注解进行构建 AnnotationConfigApplicationContext 。构建的主要大的步骤为:

  • 调用无参构造方法
  • 注册类
  • 刷新

整个过程极为重要的为刷新,而且后续也都在讲述 刷新的步骤。

以下是 ApplicationContext 对象构建的流程图:

uriZV2

九夏...大约 12 分钟it框架spring源码