MyBatis的架构和其运行流程

0x00:MyBatis 架构组成

MyBatis 整体的架构组成为:数据源配置文件、SQL 映射配置文件、会话工厂、会话、执行器以及底层封装对象组成。

0x01:数据源配置文件

对于持久层框架,连接数据库是最重要的一步。MyBatis 框架对于数据库连接的配置信息采用了数据库连接池的形式。数据库连接池负责分配、管理、和释放数据库连接,其只使用一个连接,提高了操作性能。不像 JDBC,每次对数据库操作,都需要连接然后释放,这也是 MyBatis 相对 JDBC 其中的一个优点。
程序本身就不用再关心数据库的配置信息,交给 MyBatis 配置文件管理即可。文件名为 SqlMapConfig.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>
    <environments default="development">
        <environment id="development">
            <!-- 使用JDBC事务管理 -->
            <transactionManager type="JDBC"/>
            <!-- 数据库连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="org.git.mm.mysql.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306"/test?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

连接池中的 org.git.mm.mysql.Driver 是 com.mysql.jdbc.Driver 的之类,也是 Mysql 数据库的连接驱动,如果项目中有整合 SpringMVC 框架时,则连接池可配在 SpringMVC 的配置文件中。

0x02:SQL 映射配置文件

在 JDBC 中,sql 语句一般会写在 java 文件中,而 MyBatis 会将这些 sql 语句单独放在配置文件中 Mapper.xml。
作用流程:MyBatis 会根据配置文件中的参数配置,将组装了参数的 Java 对象或 Map 对象中的相关字段与 Mapper.xml 中的参数配置做匹配,将相关参数绑定到需要执行的 sql 语句上。其 Mapper.xml 配置文件,完成了对 sql 语句的映射配置。例如以下示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test">
    <select id="id" parameterType="int" resultType="cn.com.mybatis.model.User">
        SELECT * FROM USER WHERE id=#{id}
    </select>
</mapper>

其中,id 是 sql 语句要绑定的字段名,parameterType 是绑定字段的类型,resultType 是把结果映射为一个 Java 对象。
Mapper.xml 文件一般配置在 SqlMapConfig.xml 中,示例代码如下:

<mappers>
    <mapper resource="Mapper.xml"/>
</mappers>

0x03:会话工厂与会话

当数据库连接池配置文件 SqlMapConfig.xml 和 sql 映射配置文件 Mapper.xml 都准备好后,就需要相关的程序来读取并加载这些配置文件的信息,MyBatis 用来处理这些配置文件的核心对象就是会话工厂与会话。
MyBatis 中,会话工厂是 SqlSessionFactory 类。SqlSessionFactory 会根据数据库配置信息产生可以连接数据库并与其交互的 SqlSession 会话实例类。而 SqlSession 实例类,便会依照 Mapper 配置文件中的 sql 配置,对数据库执行增删改查的操作。

0x04:执行器和底层封装对象

SqlSession 类内部是通过执行器 Executor 对数据库进行操作的,执行器 Executor 与数据库交互,依靠的是底层封装对象 Mappered Statement,这个底层对象 Mappered Statement 封装了从 Mapper 文件读取信息的功能,读取的内容包括 sql 语句、输入参数、输出结果类型等。

0x05:MyBatis 运行流程

MyBatis 的运行流程其实就是其架构的处理流程,总结下如下:
首先,SqlSessionFactory 会话工厂会加载 SqlMapConfig.xml 配置文件信息,然后生成一个可以与数据库交互的会话实例类 SqlSession,会话实例类 SqlSession 会根据 Mapper 配置文件中的 sql 配置,去执行相应的增删改查操作。这样,MyBatis 就实现了与数据库的交互功能。

MyBatis 运行流程结构图如下:

 

 

 

当了解了 MyBatis 运行流程后,会更好更容易的去学习这个框架。

 


                                                                        公众号推荐:aFa攻防实验室

                         分享关于信息搜集、Web安全、内网安全、代码审计、红蓝对抗、Java、Python等方面的东西。

                                                                         

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值