Mybatis 的工作流程及原理

  • Post author:
  • Post category:其他


Mybatis 简介:

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(普通的 Java 对象)映射成数据库中的记录。

Mybatis 工作原理

如图:

解析:

  1. mybatis 应用程序通过 SqlSessionFactoryBuilder 从 mybatis-config.xml 配置文件中来构建 SqlSessionFactory,

  2. SqlSessionFactory 的实例直接创建一个 SqlSession,

  3. 再通过 SqlSession 实例获得 Mapper 对象并运行 Mapper 映射的 SQL 语句,完成对数据库的 CRUD 和事务提交,

  4. 最后关闭 SqlSession。

Mybatis 核心类

SqlSessionFactory:

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory(工厂) 的实例可以通过 SqlSessionFactoryBuilder(工厂建造者) 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或通过 Java 的方式构建出 SqlSessionFactory 的实例。SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,建议使用单例模式或者静态单例模式。一个 SqlSessionFactory 对应配置文件中的一个环境。

SqlSession:

SqlSession 是一个接口,它有两个实现类,分别是 DefaultSqlSession(默认使用)以及 SqlSessionManager。SqlSession 通过内部存放的执行器(Executor)来对数据进行 CRUD。此外 SqlSession 不是线程安全的,因为每一次操作完数据库后都要调用 close 对其进行关闭。建议通过 try-finally 来保证关闭 SqlSession。

Executor:

Executor 接口有两个实现类,其中 BaseExecutor 有三个继承类分别是 BatchExecutor(重用语句并执行批量更新),ReuseExecutor(重用预处理语句 prepared statement,跟 Simple 的唯一区别就是内部缓存 statement),SimpleExecutor(默认的,每次都会创建新的 statement)。



版权声明:本文为m0_69804655原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。