当前位置: 首页 > news >正文

深入剖析 MyBatis 核心原理模块一:快速入门

一、开篇词 领略 MyBatis 设计思维,突破持久化技术瓶颈

为什么要学习MyBatis

  1. MyBatis 自身亮点
    • MyBatis 本身就是一款设计非常精良、架构设计非常清晰的持久层框架,并且 MyBatis 中还使用到了很多经典的设计模式,例如,工厂方法模式、适配器模式、装饰器模式、代理模式等。
    • MyBatis 提供了很多扩展点,例如,MyBatis 的插件机制、对第三方日志框架和第三方数据源的兼容等。
    • 开发人员使用 MyBatis 上手会非常快,具有很强的易用性和可靠性。
  2. MyBatis 在一线互联网大厂中应用广泛,已经成为你进入大厂的必备技能

二、常见持久层框架赏析,到底是什么让你选择MyBatis?

在绝大多数在线应用场景中,数据是存储在关系型数据库中的,作为一个 Java 开发者,几乎天天与关系型数据库打交道,在生产环境中常用的关系型数据库产品有 SQL Server、MySQL、Oracle 等。在使用这些数据库产品的时候,基本上是如下思路:

  • 在写Java代码的过程中,使用的是面向对象的思维去实现业务逻辑;
  • 在设计数据库表的时候,考虑的是第一范式、第二范式和第三范式
  • 在操作数据库记录的时候,使用 SQL 语句以及集合思维去考虑表的连接、条件语句、子查询等的编写。

这个时候,就需要一座桥梁将 Java 类(或是其他数据结构)与关系型数据库中的表,以及 Java 对象与表中的数据映射起来,实现 Java 程序与数据库之间的交互。JDBC(Java DataBase Connectivity)是 Java 程序与关系型数据库交互的统一 API。

JDBC操作的核心步骤,具体如下:

  1. 注册数据库驱动类,指定数据库地址,其中包括 DB 的用户名、密码及其他连接信息;
  2. 调用 DriverManager.getConnection() 方法创建 Connection 连接到数据库;
  3. 调用 Connection 的 createStatement() 或 prepareStatement() 方法,创建 Statement 对象,此时会指定 SQL(或是 SQL 语句模板 + SQL 参数);
  4. 通过 Statement 对象执行 SQL 语句,得到 ResultSet 对象,也就是查询结果集;
  5. 遍历 ResultSet,从结果集中读取数据,并将每一行数据库记录转换成一个 JavaBean 对象;
  6. 关闭 ResultSet 结果集、Statement 对象及数据库 Connection,从而释放这些对象占用的底层资源。

为了处理上述代码重复的问题以及后续的维护问题,我们在实践中会进行一系列评估,选择一款适合项目需求、符合人员能力的 ORM(Object Relational Mapping,对象-关系映射)框架来封装 1~6 步的重复性代码,实现对象模型、关系模型之间的转换。这正是ORM 框架的核心功能:根据配置(配置文件或是注解)实现对象模型、关系模型两者之间无感知的映射
在这里插入图片描述

Hibernate

Hibernate 是 Java 生态中著名的 ORM 框架之一。

三、订单系统持久层示例分析,20分钟带你快速上手MyBatis

传送门

四、MyBatis源码环境搭建及整体架构解析

下载MyBatis源码

git clone https://github.com/mybatis/mybatis-3.git
cd ./mybatis-3/
git checkout -b mybatis-3.5.6 mybatis-3.5.6
git branch -vv # 检查是否分支切换成功

MyBatis结构简介

MyBatis 分为三层架构,分别是基础支撑层、核心处理层和接口层,如下图所示:
在这里插入图片描述
MyBatis三层架构图:
1、基础支撑层
基础支撑层是整个MyBatis框架地基,为整个MyBatis框架提供了非常基础的功能,其中每个模块都提供了一个内聚的、单一的能力,MyBatis基础支撑层按照这些单一的能力可以划分为上图所示的九大基础模块:

  1. 类型转换模块。
  2. 日志模块。
  3. 反射工具模块。
  4. Binding模块。
  5. 数据源模块。
  6. 缓存模块。
  7. 解析器模块
  8. 事务管理模块。
  9. 资源加载模块。

2、核心处理层
核心处理层是MyBatis核心实现所在,其中涉及MyBatis的初始化以及一条SQL语句的全流程。

  1. 配置解析。
  2. SQL解析与scripting模块。
  3. SQL执行。
  4. 插件。

3、接口层
接口层是MyBatis 暴露给调用的接口集合,这些接口都是使用 MyBatis 时最常用的一些接口,例如,SqlSession接口、SqlSessionFactory接口等。其中,最核心的是SqlSession接口,你可以通过它实现很多功能,例如,获取 Mapper 代理、执行 SQL 语句、控制事务开关等。


文章转载自:

http://YmscglvS.xkqjw.cn
http://PwpMgymQ.xkqjw.cn
http://iRrljY1e.xkqjw.cn
http://RAU3abtj.xkqjw.cn
http://P6B0wWA1.xkqjw.cn
http://wTaPKL3G.xkqjw.cn
http://KMdn4lf5.xkqjw.cn
http://vyhonwmD.xkqjw.cn
http://oTJkZD6K.xkqjw.cn
http://WeV4A1RY.xkqjw.cn
http://Vkl4QLss.xkqjw.cn
http://BKSQiOWx.xkqjw.cn
http://UIVnC81K.xkqjw.cn
http://jK8Ii4hH.xkqjw.cn
http://e3xYjLWC.xkqjw.cn
http://4WZR7tYa.xkqjw.cn
http://WGKGWbEY.xkqjw.cn
http://9AlxT88u.xkqjw.cn
http://GckFhrfc.xkqjw.cn
http://T5PEuNsX.xkqjw.cn
http://81T6Bz7S.xkqjw.cn
http://UyB012N3.xkqjw.cn
http://YxDDnF7d.xkqjw.cn
http://lDpyrwyF.xkqjw.cn
http://U64q3v3O.xkqjw.cn
http://SxgCz90m.xkqjw.cn
http://vjRufNRz.xkqjw.cn
http://N2gESKJU.xkqjw.cn
http://6uJuVbyF.xkqjw.cn
http://MYAAmhzl.xkqjw.cn
http://www.dtcms.com/a/372685.html

相关文章:

  • 【Ansible】的介绍
  • VMware共享文件夹设置
  • YOLO11实战 第009期-基于yolo11的咖啡叶病害目标检测实战文档(yolo格式数据免费获取)
  • MATLAB可以实现的各种智能算法
  • PPP协议及其消息传播机制
  • 从全栈工程师视角解析Java与前端技术在电商场景中的应用
  • SQL注入7----(盲注与回显)
  • C++全局变量初始化流程详解
  • Promise 实现原理:手写一个符合 Promises/A+ 规范的 Promise
  • vue3的选项式与组合式
  • 新增用户管理权,20+项功能优化更新,zyplayer-doc 2.5.2 发布啦!
  • 二叉树算法题——拆分自然数
  • Jakarta EE课程扩展阅读(一)
  • 【基于YOLO和Web的交通工具识别系统】
  • Python跳过可迭代对象前部元素完全指南:从基础到高并发系统实战
  • vue2(7)-单页应用程序路由
  • 布隆过滤器:快速判断某个元素是否存在
  • 信号衰减中的分贝到底是怎么回事
  • [光学原理与应用-461]:波动光学 - p光,s光; o光,e光;分别是什么意思,有什么关联?
  • python---静态方法和类方法
  • Nature子刊-香港大学研发新型陡峭山坡巡检无人机,破解密林细小障碍物规避难题
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘setuptools’问题
  • 基于 Django+Vue3 的 AI 海报生成平台开发(海报模块专项)
  • 机器学习-K-means聚类
  • 维度跃迁:当万物皆成电路,智能将从“拥有”变为“存在”
  • 前端:最新最全的JavaScript知识汇总,持续更新......
  • PO BAPI bapi_po_create1
  • 当前车载测试的难点分析
  • Pyhton基础之多继承、多态
  • AOSP Framework开发的一些超方便的快捷命令