MyBatis的工作原理
一、MyBatis 的基本原理
MyBatis 主要是通过 XML 文件或注解 配置并管理 SQL 语句的执行,并将结果映射为 Java 对象。
步骤
(1)加载配置
·MyBatis 通过 SqiSessionFactory 加载配置文件。配置文件通常包括数据库连接信息、Mapper 映射文件等内容。使用者可以通过配置文件定义 SQL语句,也可以通过注解的方式来实现。
(2)创建 sqlsessionFactory
·MyBatis 使用 SalSessionFactoryBuilder 来读取配置文件(mybatis-config.xml )并创建 SqlSessionFactory 。
SalSessionFactory 是 MyBatis 交互的核心,它管理 SQL 会话以及与数据库交互的资源。
(3)获取 sqlsession
SqlSessionFactory 负责生成 SqlSession 对象, SqlSession 是用户操作数据库的接口。通过它可以执行 SQL提交事务、关闭连接等。
(4)执行 SQL 语句
·通过 SqiSession 来调用 Mapper 文件中的 SQL语句。这些 SQL 语句可以是 CRUD 操作、存储过程调用,或者其他类型的查询。
(5)结果映射
·MyBatis 负责将数据库的查询结果集映射为 java 对象。可以通过配置 XML 映射文件或者注解来指定如何将 SQL查询结果映射为 Java 实体类。MvBais 支持单个结果映射(例如将査询结果映射为一个 java 对象)以及集合映射(将查询结果映射为 Java 的 List、Map 等)。
二、MyBatis 的核心组件
(1)SqlSessionFactory
·这是 MyBatis 的核心接口之一,主要用于创建 SqiSession 。它是线程安全的,因此通常在应用启动时只需创建一次。每次数据库交互时都要通过 SqlSessionFactory 来获取一个新的 SqlSession 实例。
(2)SqlSession
这是执行 SQL 语句的主要接口。"update 和它提供了数据库操作方法,包括selectoneselectList、insertdelete 。它也是管理事务的接口,commit和rollback 都通过 SalSession 完成.
(3) Mapper
·Mapper是 MyBatis 的数据映射文件(XML)或接口,定义了如何将 SQL语句映射到Java方法中。MyBatis 提供了基于接口和注解的 Mapper 机制,使得我们可以以接口的形式定义 DAO(数据访问对象)。
(4)Configuration
·它是 MyBatis 的配置类,存储了所有的配置信息,例如数据源、Mapper 文件、环境、事务管理等Configuration是SqlSessionFactory 生成 SqlSession 的基础。
三、工作流程
当调用Mapper接口中的方法时,MyBatis的工作流程大致如下:
获取SqlSession:
应用程序通过SqlSessionFactory获取一个SqlSession实例。
调用Mapper方法:
通过SqlSession调用Mapper接口中定义的方法。
解析映射文件或注解:
MyBatis检查Mapper接口上的方法,并找到相应的XML映射文件或注解中的SQL语句。
执行SQL语句:
根据找到的SQL语句,MyBatis会生成并执行相应的SQL命令。
如果是查询操作,它会将结果集映射到Java对象(POJOs)中。
返回结果:
执行完毕后,MyBatis将结果返回给调用者。
对于查询操作,返回的是映射后的Java对象或对象列表。
关闭SqlSession:
操作完成后,应该关闭SqlSession以释放数据库连接资源。