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

相关文章

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI