Spring Boot 集成 MyBatis —— 概念篇
-
ORM框架
- 对象关系映射:Object Relational Mapping
- 出现原因:解决面向对象与关系型数据库的不匹配而产生的技术
- 具体实现:ORM 通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
-
Mybatis
- Mybatis就是一款标准的ORM框架,支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。
- MyBatis 消除了几乎所有的JDBC 代码和参数的手工设置以及对结果集的检索封装。
- MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的实体类映射成数据库中的记录。
-
Mybatis优缺点
Pros Cons 1、SQL 被统一提取出来,便于统一管理和优化 1、编写 SQL 语句时工作量很大 2、SQL 和代码解耦,将业务逻辑和数据访问逻辑分离,项目结构更清晰 2、SQL 语句依赖于数据库,导致数据库移植性差 3、提供映射标签,支持对象与数据库的 ORM 字段关系映射 4、灵活书写动态 SQL,支持各种条件来动态生成不同的 SQL -
Mapper 实现方式
- 基于 XML 的 Mapper 配置文件
- 基于 Java 注解的MyBatis 注解
- 直接使用 MyBatis 提供的 API
-
Mapper 接口
- Mapper 接口是指自行定义的一个数据操作接口,类似于通常所说的 DAO
- MyBatis 会自动为 Mapper 接口创建动态代理对象
- Mapper 接口的方法通常与 Mapper 配置文件中的 select、insert、update、delete 等 XML 结点存在对应关系
-
Mybatis 的核心接口 —— Executor
- MyBatis 中所有的 Mapper 语句的执行都是通过 Executor 进行的
-
MyBatis 的关键对象 —— SqlSession
- SqlSession 类似于 JDBC 的Connection
- SqlSession 对象完全包含以数据库为背景的所有执行 SQL 操作的方法
- 它的底层封装了JDBC 连接,可以用 SqlSession 实例来直接执行被映射的 SQL 语句
-
MyBatis 的关键对象 —— SqlSessionFactory
- SqlSessionFactory是单个数据库映射关系经过编译后的内存镜像
- SqlSessionFactory 对象的实例可以通过 SqlSessionFactoryBuilder 对象类获得
- SqlSessionFactoryBuilder 可以从 XML 配置文件或预先定制的 Configuration 的实例构建出
-
Mybatis 工作流程
- 加载 Mapper 配置的 SQL 映射文件,或者是注解的相关 SQL 内容
- 创建会话工厂:MyBatis 通过读取配置文件的信息来构造出会话工厂(SqlSessionFactory)
- 创建会话:根据会话工厂,MyBatis 就可以通过它来创建会话对象(SqlSession)。会话对象是一个接口,该接口中包含了对数据库操作的增删改查方法
- 创建执行器:因为会话对象本身不能直接操作数据库,所以它使用了一个叫做数据库执行器
(Executor)的接口来帮它执行操作 - 封装 SQL 对象:在这一步,执行器将待处理的 SQL 信息封装到MappedStatement对象中,MappedStatement对象包括 SQL 语句、输⼊入参数映射信息(Java 简单类型、HashMap 或 POJO)和输出结果映射信息(Java 简单类型、HashMap 或 POJO)
- 操作数据库:拥有了执行器和 SQL 信息封装对象就使用它们访问数据库了,最后再返回操作结果,结束流程。
-
MyBatis-Spring-Boot-Starter
- MyBatis-Spring-Boot-Starter是MyBatis 快速集成 Spring Boot 提供的一个组件包
-
优点
- 构建独立的应用
- 几乎可以零配置
- 需要很少的 XML 配置
-
集成方案
- 简化后的 XML 配置版
- 使用注解
下一篇:Spring Boot 集成 MyBatis —— 实战篇