Mybatis 初始化前的准备工作

在理解 Mybatis 的初始化过程之前,需要了解一些准备工作:

1. 定义数据源

在使用 Mybatis 之前,需要先配置数据库连接,并定义数据源。数据源可以是 JNDI 数据源、连接池数据源等,这里以连接池数据源为例。连接池数据源可以通过一些第三方库,如 C3P0、Druid 等来实现,也可以直接使用 Java 内置的连接池类,如 BasicDataSource 等。通过配置数据源,可以提供数据库连接,供 Mybatis 使用。

2. 配置 Mybatis 配置文件

Mybatis 使用一个名为“mybatis-config.xml”的配置文件来定义整个框架的全局配置。在这个配置文件中,可以指定各种配置项,如数据库连接信息、缓存配置、插件配置、类型别名等。这些配置项将在初始化过程中被解析和使用。

在配置文件中,需要定义数据源、事务管理器等信息,以及 Mapper 接口所在的包路径等。这些信息将在初始化过程中被用来构建 SqlSessionFactory。

Mybatis 初始化过程

Mybatis 的初始化过程主要包括以下几个步骤:

1. 解析配置文件

Mybatis 在初始化时,会读取并解析指定的配置文件(即“mybatis-config.xml”),获取其中的各种配置项和信息。解析过程中,会使用 XPath 等方式来读取和解析 XML 配置文件,将配置项封装成 Java 对象。

2. 创建 SqlSessionFactory

在解析配置文件后,Mybatis 会使用解析得到的配置项和信息,来创建一个 SqlSessionFactory。SqlSessionFactory 是 Mybatis 的核心接口,用于创建 SqlSession,代表了一次数据库会话。它是线程安全的,可以被多个线程共享,通常在应用程序启动时创建一次。

创建 SqlSessionFactory 的过程中,会根据配置文件中的数据库连接信息、缓存配置等,创建数据库连接池、缓存等资源,并将配置文件中的 Mapper 接口注册到 SqlSessionFactory 中。同时,还会根据配置文件中的事务管理器信息,来设置 SqlSessionFactory 的事务管理功能。

3. 创建 SqlSession

通过 SqlSessionFactory,可以创建一个 SqlSession,用于执行数据库操作。SqlSession 是一个面向用户的操作接口,提供了各种数据库操作方法,如插入、删除、更新、查询等。每个数据库操作方法都对应了一个对应的 SQL 语句,这些 SQL 语句可以在 Mapper 接口中定义和维护。

创建 SqlSession 的过程中,会初始化一些与数据库会话相关的参数和资源,并将配置文件中的 Mapper 接口实例化并注入到 SqlSession 中。同时,还会为每个 Mapper 接口创建一个动态代理对象,用于在接口方法调用时,执行对应的 SQL 语句。

4. 执行数据库操作

通过 SqlSession,可以执行各种数据库操作。在执行操作时,通过 Mapper 接口的方法调用,触发相应的 SQL 语句执行。

执行数据库操作的过程中,会涉及到参数的传递、SQL 语句的执行、结果的映射等。Mybatis 会根据配置文件中的参数映射配置、SQL 语句映射配置等,自动进行参数匹配和结果映射。

执行完数据库操作后,可以通过 SqlSession 的 commit 或 rollback 方法,提交或回滚事务,并最终关闭 SqlSession,释放数据库连接资源。