MyBatis之核心对象与工作流程及SqlSession操作

简介: 本文详解MyBatis四大核心对象(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)及其协同工作流程,涵盖建造者/工厂/代理等设计模式应用,并演示如何通过SqlSession直接执行SQL,助力开发者深入理解框架底层机制。(239字)

💡【开发哲学共勉】

像 MyBatis 拆分 Builder/Factory/Session 一样,把大问题拆成只做一件事的小模块

🎉 前言

本节来讲解一下MyBatis核心对象和工作流程及使用SQLSession来操作数据库,旨在帮助大家更好的理解和掌握相关的知识(๑•̀ㅂ•́)و✧

个人主页:艺杯羹 🌿

系列专栏:MyBatis🚀

1. 📦MyBatis核心对象及工作流程

先看流程图,看完下面的讲解内容,再回过来看,就豁然开朗了(๑•̀ㅂ•́)و✧

1.1. 🎯MyBatis 4个核心对象

  1. SqlSessionFactoryBuilder
    可以理解成一个工厂的建造者,可以来创建工厂 --- SqlSessionFactory
  2. SqlSessionFactory
    可以理解成一个工厂,可以来生产SqlSession对象
  3. SqlSession
  1. 可以操作数据库
  2. 也可以创造Mapper代理对象操作数据库
  1. Mapper
    持久层接口的代理对象,实现持久层接口,来操作数据库

对象名称

理解类比

核心功能描述

SqlSessionFactoryBuilder

工厂建造者

负责创建 SqlSessionFactory 工厂,如同建筑师按图纸搭建工厂框架,仅在初始化时使用一次

SqlSessionFactory

数据库会话工厂

作为生产 SqlSession 的工厂,统一管理数据库连接配置,以单例模式存在,贯穿项目生命周期

SqlSession

数据库操作会话

直接执行 SQL 语句操作数据库,可管理事务;也能创建 Mapper 代理对象,是与数据库交互的核心接口

Mapper

持久层接口代理对象

实现持久层接口的动态代理,将接口方法映射为 SQL 操作,无需手写 SQL 即可完成数据库交互

它的工作流程也和上面介绍的这个顺序是一样的

1.2. 🕹️MABatis工作流程

  1. 创建 SqlSessionFactoryBuilder对象(创建工程的建造者)
  2. SqlSessionFactoryBuilder对象创建SqlSessionFactory(建造工程,成为建造者模式)
  3. SqlSessionFactory 对象生产了 SqlSession对象:工厂模式
  4. SqlSession对象创建了持久层接口的代理对象:动态代理模式
  5. 代理对象 Mapper操作数据库

现在可以回过去看看,工作的流程图,就能看懂了

2. 📝使用SqlSession操作数据库初体验

上面提到了可以使用代理对象Mapper获取对象,也可以SqlSession来获取对象,这种用的比较少那么先来看看SqlSession是如何获取对象的

2.1. 读取核心配置文件

InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");

2.2. 创建SqlSessionFactoryBuilder对象

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

2.3. 使用SqlSessionFactoryBuilder获取SqlSessionFactory对象

SqlSessionFactory factory = builder.build(is);

2.4. SqlSessionFactory对象获取SqlSession对象

SqlSession session = factory.openSession();

2.5. 使用SqlSession直接操作数据库

List<User> users = session.selectList("com.yibeigen.mapper.UserMapper.findAll");
// 输出
users.forEach(System.out::println);

2.6. 关闭资源

session.close();
is.close();

完整代码

@Test
public void testFindAll2() throws Exception {
  // (1)读取核心配置文件
  InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
  // (2)创建SqlSessionFactoryBuilder对象
  SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
  // (3)SqlSessionFactoryBuilder对象获取SqlSessionFactory对象
  SqlSessionFactory factory = builder.build(is);
  // (4)SqlSessionFactory对象获取SqlSession对象
  SqlSession session = factory.openSession();
  // (5)SqlSession直接操作数据库
  List<User> users = session.selectList("com.yibeigen.mapper.UserMapper.findAll");
  users.forEach(System.out::println);
  // (6)关闭资源
  session.close();
  is.close();
}

3. ✨总结

MyBatis核心对象和工作流程及sqlsession讲解就到此结束了,希望对你有所帮助😊

目录
相关文章
|
2月前
|
NoSQL 前端开发 安全
零成本邮件验证码全链路拆解,附最新 QQ 邮箱 SMTP 授权码完整步骤
本文详解个人项目“词帆CiFan”中邮件验证码功能的完整实现:选用QQ邮箱SMTP零成本方案,涵盖密码重置与账号注销两大核心场景,包含前后端链路设计、Redis降级容错、安全配置避坑(如授权码获取、端口选择、环境变量保护)及AI辅助开发技巧。
239 0
零成本邮件验证码全链路拆解,附最新 QQ 邮箱 SMTP 授权码完整步骤
阿里云轻量应用服务器68元/年,新用户特价,不要退款,重新买价格459元,涨价了!
阿里云轻量应用服务器新用户专享价68元/年(2核2G、200M带宽、40GB ESSD),秒杀低至38元。⚠️地域选定后不可修改,退款将失去新用户资格,再购恢复原价459元/年!务必下单前确认地域,避免浪费优惠。阿里云轻量应用服务器官网:https://t.aliyun.com/U/dwftch
|
2月前
|
Java 程序员 应用服务中间件
Maven之初识与安装
本文详解Maven安装与配置全流程:从基础概念、下载安装、环境变量配置到版本验证,助新手一次理清逻辑、顺利完成部署;涵盖一键构建、依赖管理核心功能,并提供交流支持。
190 0
Maven之初识与安装
|
2月前
|
前端开发 Java 测试技术
Maven 之工程构建与依赖管理全攻略
本文系统讲解Maven核心知识:涵盖POM/JAR/WAR工程类型与标准目录结构;详解构建生命周期(validate→compile→test→package→install→deploy)及常用命令;深入解析本地/远程/中央仓库机制,并指导配置本地仓库路径、阿里云镜像及JDK版本。内容精炼实用,助开发者快速掌握Maven项目管理精髓。
145 1
Maven 之工程构建与依赖管理全攻略
|
2月前
|
存储 C语言
二级C语言题解:整数序列奇偶个数、拼接数字字符、数组取偶数并加小数点
本文详解C语言三道经典编程题:①统计整数序列中奇偶数个数并返回结构体;②提取字符串中数字字符拼接成整数;③筛选数组偶数并按原序拼接为“数字.”格式字符串。含完整代码、填空/修改/设计解析及易错点提醒。
105 1
二级C语言题解:整数序列奇偶个数、拼接数字字符、数组取偶数并加小数点
|
2月前
|
人工智能 C语言
二级C语言题解:十进制转其他进制、非素数求和、重复数统计
本文详解三类经典编程题:十进制转任意进制(填空)、非素数求和(修改)与重复数字统计(设计),含完整代码、逐空分析及易错点解析,助你夯实C语言基础。
136 2
二级C语言题解:十进制转其他进制、非素数求和、重复数统计
|
2月前
|
SQL Java 数据库连接
MyBatis 之基础概念与框架原理详解
MyBatis是一款轻量级半自动ORM框架,封装JDBC,让开发者专注SQL编写与业务逻辑;支持XML/注解配置、动态SQL、高级映射,SQL与代码分离,灵活高效,显著提升持久层开发效率。(239字)
133 1
MyBatis 之基础概念与框架原理详解
|
2月前
|
C语言 索引
二级C语言题解:迭代求根、字符串加法、字符串拆分
本文详解三道C语言编程题:①迭代法求平方根(牛顿法),误差≤1e-6;②字符串模拟大数加法,处理进位与字符数字转换;③字符串按索引模3拆分为三子串。含填空、修改、设计三类题型及完整解析代码。
86 1
二级C语言题解:迭代求根、字符串加法、字符串拆分
|
2月前
|
存储 C语言
C语言二级题解:查找字母以及其他字符个数、数字字符串转双精度值、二维数组上下三角区域数据对调
本文详解C语言二级考试三类典型题:统计字母及非字母字符个数、数字字符串转双精度浮点数、二维数组上下三角区域数据对调。含题目解析、错误定位与完整代码,适合备考学生、中职生及编程爱好者提升实战能力。
130 1
C语言二级题解:查找字母以及其他字符个数、数字字符串转双精度值、二维数组上下三角区域数据对调
|
2月前
|
Java 应用服务中间件 Shell
Tomcat 使用与配置全解
Tomcat是Apache开源的轻量级Java Web容器,实现Servlet/JSP规范,支持Web应用部署与运行。需搭配JDK使用,目录结构清晰(如webapps存应用、conf存配置),默认端口8080,启动简单,广泛用于开发与中小型项目部署。
153 1
Tomcat 使用与配置全解

热门文章

最新文章