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

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源码
包详解

包详解

transaction

背景知识

  • 工厂模式

讲解

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


九夏...大约 6 分钟it框架mybatis源码