mybatis 依赖于jdbc_第1章 MyBatis快速入门

1.1 ORM简介

传统JDBC编程主要步骤:
1.注册数据库驱动类,明确指定数据库URL、用户名、密码等连接信息;
2.通过DriverManager打开数据库连接;
3.通过数据库连接创建Statement对象(预执行语句对象);
4.通过Statement对象执行SQL,得到ResultSet结果对象;
5.通过ResultSet读取数据,并将数据转换为JavaBean对象;
6.关闭ResultSet、Statement对象以及数据库连接,释放相关资源;
ORM框架就是根据映射配置文件,完成数据在对象模型与关系模型之间的映射,同事屏蔽上述的重复代码。

1.2 常见持久化框架

Hibernate、JPA、、Spring JDBC、Mybatis

1.3 Mybatis 示例

MyBatis配置文件:

4e2d74efd52839c57a4f001a8356c0b7.png

a090f97e5ccaa4f26dfdf78c00c7f74a.png

映射配置文件:

3990489d57f6a9e129ba5137c1b259ad.png

459deec3ebaf8c3fd9178e372e6e3fba.png

应用程序首先,会加载mybatis-config.xml配置文件,并根据配置文件内容创建SqlSessionFactory对象;然后,通过SqlSessionFactory对象创建SqlSession对象,SqlSession接口中定义了执行SQL语句的各种方法;之后,通过SqlSession对象执行映射配置文件中定义的SQL语句,完成相应的数据操作;最后,通过SqlSession对象提交事务,关闭SqlSession对象。

1.4 Mybatis 整体架构

MyBatis整体架构分为三层:基础支持层,核心处理层,接口层。

08fa5f64e8a1453b1770d2cc70de9063.png

1.4.1 基础支持层

  • 反射模块

对Java原生的反射进行封装,提供简易的API。

  • 类型转换模块

实现别名的转换;实现JDBC类型与Java类型之间的转换;

  • 日志模块

集成第三方日志框架

  • 资源加载模块

对类加载器进行封装,确定类加载器的使用顺序,提供加载类文件以及其他资源文件的功能

  • 解析器模块

对XPath进行封装,为MyBatis初始化时解析MyBatis配置文件和映射配置文件提供支持;

处理动态Sql语句中的占位符提供支持;

  • 数据源模块

提供MyBatis自身数据库实现;提供对第三方数据源的集成的接口;

  • 事务管理

对数据库事务进行抽象。与Spring框架集成,由Spring进行事务管理。

  • 缓存模块

MyBaits提供一级缓存、二级缓存,这个两级缓存都依赖于基础支持层的缓存模块。

  • Binding模块

MyBatis通过绑定模块将用户自定义的Mapper接口与映射配置文件进行关联,系统可以通过调用自定义Mapper接口中的方法执行相应的Sql语句完成数据库操作。开发人员无需编写自定义Mapper接口的实现,MyBatis会自动为其创建动态代理对象。

1.4.2 核心处理层

核心处理层实现了Mybatis的核心处理流程,包括MyBatis的初始化,完成一次数据库操作的涉及的全部流程。

  • 配置解析

MyBatis在初始化过程中,会加载MyBatis配置文件、映射配置文件以及Mapper接口中的注解信息,解析后的配置信息会形成相应的对象,存储在Configuration对象中。

  • SQL解析与scription脚本

动态sql解析

  • SQL执行

SQL执行涉及 Executor、StatementHandler、ParameterHandler、ResultSetHandler等多个组件。

Executor主要维护一级缓存、二级缓存提供事务管理的相关操作,他会将数据库相关操作委托给StatementHandler完成。

StatementHandler首先通过ParameterHandler完成SQL语句的实参绑定,然后通过java.sql.Statement对象执行SQL语句并得到结果,最后通过ResultSetHandler完成结果集映射,得到结果对象并返回。

8eb5d8a1cd16d8652036494c3e76c8e9.png
  • 插件

1.4.3 接口层

定义了MyBatis暴露的API。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值