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正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

mybatis-plus如何根据任意字段saveOrUpdateBatch

《mybatis-plus如何根据任意字段saveOrUpdateBatch》MyBatisPlussaveOrUpdateBatch默认按主键判断操作类型,若需按其他唯一字段(如agentId、pe... 目录使用场景方法源码方法改造首先在service层定义接口service层接口实现总结使用场景my

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编