Mybatis操作主体流程

2024-05-06 09:48
文章标签 流程 操作 mybatis 主体

本文主要是介绍Mybatis操作主体流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

完整的时序图可以打开我的云笔记进行查看,对浏览器查看比例进行缩放为250%即可

1 Mybatis操作主体流程

  • 定位配置文件的位置
  • 构建sessionFactory
  • 获取数据库操作会话
  • 建立数据库连接并执行数据库操作

1.1 定位配置文件位置

使用org.apache.ibatis.io.Resources.getResourceAsReader(String)定位mybatis配置文件的位置,获得文件的输入流。

Created with Raphaël 2.1.0 Reader Reader Resources Resources InputStreamReader InputStreamReader InputStream InputStream ClassLoaderWrapper ClassLoaderWrapper ClassLoader ClassLoader getResourceAsReader() getResourceAsReader() '' getResourceAsStream() getResourceAsStream() getResourceAsStream() '' getResourceAsReader new InputStreamReader()

1.2构建SqlSessionFactory

构建SqlSessionFactory的时序图,使用SqlSessionFactoryBuilder创建SqlSessionFactory对象

Created with Raphaël 2.1.0 SqlSessionFactoryBuilder SqlSessionFactoryBuilder XMLConfigBuilder XMLConfigBuilder XPathParser XPathParser DocumentBuilder DocumentBuilder DOMParser DOMParser Document Document Configuration Configuration SqlSessionFactory SqlSessionFactory build(reader) XMLConfigBuilder(XPathParser) createDocument() parse() getDocument() new XPathParser() new XMLConfigBuilder() parse() parseConfiguration() build(Configuration)

根据时序图可以看得出,创建sessionFactory需要

  • 将读入的配置文件流解析为Document对象
  • 将Document对象解析为Configuration对象
  • 使用Configuration对象,通过build()方法完成对SqlSessionFactory对象的创建。

1.3 获取数据库操作的会话

Created with Raphaël 2.1.0 SqlSessionFactory SqlSessionFactory DefaultSqlSessionFactory DefaultSqlSessionFactory SqlSession SqlSession openSession() openSessionFromDataSource() new DefaultSqlSession()

1.4 获取接口实例

Created with Raphaël 2.1.0 SqlSession SqlSession DefaultSqlSession DefaultSqlSession Configuration Configuration MapperRegistry MapperRegistry Proxy Proxy UserMapper UserMapper getMapper() getMapper() getMapper() newInstance() Proxy.newProxyInstance()
Created with Raphaël 2.1.0 UserMapper UserMapper MapperProxy MapperProxy MapperMethod MapperMethod DefaultSqlSession DefaultSqlSession CachingExecutor CachingExecutor SimpleExecutor SimpleExecutor BaseExecutor BaseExecutor PreparedStatementHandler PreparedStatementHandler PreparedStatement PreparedStatement DefaultResultSetHandler DefaultResultSetHandler getUserById() execute() selectOne() selectList() query() query() queryFromDatabase() doQuery() prepareStatement() getConnection() prepare() query() execute() handleResultSets() ''

在执行具体的
org.apache.ibatis.executor.SimpleExecutor.prepareStatement(StatementHandler, Log)处连接数据库,检查是否能连接成功

数据库连接时序图

Created with Raphaël 2.1.0 SimpleExecutor SimpleExecutor BaseExecutor BaseExecutor JdbcTransaction JdbcTransaction DataSource DataSource UnpooledDataSource UnpooledDataSource DriverManager DriverManager DriverInfo DriverInfo getConnection() getConnection() getConnection() openConnection() getConnection() popConnection() new PooledConnection() doGetConnection() getConnection() connect() newInstance() ''

这篇关于Mybatis操作主体流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/964050

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表