返回顶部
首页 > 资讯 > 数据库 >Mybatis 连接mysql数据库底层运行的原理分析
  • 726
分享到

Mybatis 连接mysql数据库底层运行的原理分析

2024-04-02 19:04:59 726人浏览 泡泡鱼
摘要

目录什么是mybatis首先拆解mybatis架构我将mybatis主要拆分成三个部分在mybatis官网上找的入门代码第一点、数据源的获取第二点、获取执行语句第三点、操作数据源工作

工作中一直在用spring+springMVC+mybatis,只是知道它是用于持久层框架,但是一直不知道原理是什么,通过网上视频解释,自己做一个笔记,方便以后查阅。

什么是mybatis

MyBatis 是一款优秀的持久层框架,它支持定制化 sql、存储过程以及高级映射。

MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

首先拆解mybatis架构

我将mybatis主要拆分成三个部分

  • 数据源:如何获取Mysql数据库地址。
  • 执行语句:如何将我们在mybatis配置文件中生成的sql语句映射到mysql中。
  • 操作者:连接mysql数据库,执行sql语句,得到sql语句的查询结果。好比打开mysql图形化工具,Navicat for MySQL,首先连接到需要的数据库,编写sql语句,执行语句,并得到结果。

在mybatis官网上找的入门代码

// 获取数据源
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 获取执行语句
DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
// 执行sql并得到返回结果
SqlSession session = sqlSessionFactory.openSession();
try {
  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
} finally {
  session.close();
}

第一点、数据源的获取

第二点、获取执行语句

在获取sql语句的时候,最主要的类的就是mapperstatement。

第三点、操作数据源

在操作数据库的时候,其实底层封装还是java.sql中的JDBC操作,核心类还是会用到mapperstatement。

mybatis加载mapper文件有4中方式,分别是:

<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="org/mybatis/builder/AuthORMapper.xml"/>
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
<!-- 使用完全限定资源定位符(URL) -->
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
  <mapper url="file:///var/mappers/BlogMapper.xml"/>
  <mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  <mapper class="org.mybatis.builder.BlogMapper"/>
  <mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>

其中优先级最高的是package方式。 

mybatis的执行器有3中,默认的是simple。 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

您可能感兴趣的文档:

--结束END--

本文标题: Mybatis 连接mysql数据库底层运行的原理分析

本文链接: https://lsjlt.com/news/142183.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Mybatis 连接mysql数据库底层运行的原理分析
    目录什么是mybatis首先拆解mybatis架构我将mybatis主要拆分成三个部分在mybatis官网上找的入门代码第一点、数据源的获取第二点、获取执行语句第三点、操作数据源工作...
    99+
    2024-04-02
  • mysql数据库底层原理是什么
    这篇“mysql数据库底层原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysq...
    99+
    2023-04-22
    mysql
  • MyBatis框架底层的执行原理源码解析
    目录1.前言2.案例项目源码3.MyBatis源码解析底层执行原理3.1 读取mybatis配置文件创建出SqlSeesionFactory对象3.2 通过SqlSeesionFac...
    99+
    2024-04-02
  • 浅谈一下mysql数据库底层原理
    1.数据库事务的基本特性。 原子性: 事务中的所有操作要么全部提交成功,要么全部失败回滚。 场景:UPDATE cs_user SET age = 18 , gender = '女' WHER&#...
    99+
    2023-04-20
    mysql数据库 mysql底层原理
  • java连接mysql底层封装的示例分析
    小编给大家分享一下java连接mysql底层封装的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!连接数据库package...
    99+
    2024-04-02
  • mysql数据库中索引的底层原理是什么
    本篇文章为大家展示了mysql数据库中索引的底层原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下面,我们举例来说明一下聚集索引和非聚集索引的区别:其实,我...
    99+
    2024-04-02
  • Redis数据结构SortedSet的底层原理解析
    目录概述一些常用命令实现跳跃表跳表的插入压缩列表概述 一些常用命令 存储:zadd key score value获取:zrange key start end获取:同时获取分数:zrange key start end...
    99+
    2022-07-13
    Redis数据结构底层原理 SortedSet底层原理 Redis数据结构SortedSet
  • Spring数据库连接池实现原理实例分析
    这篇“Spring数据库连接池实现原理实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring数据库连接池实现原理...
    99+
    2023-07-04
  • MySQL数据库连接查询 join原理
    目录1、连接查询的分类2、交叉连接2.1、原理2.2、基本语法2.3、应用3、内连接3.1、原理3.2、基本语法3.3、应用4、外连接4.1、原理4.2、基本语法4.3、特点4.4、...
    99+
    2024-04-02
  • Express连接MySQL及数据库连接池的示例分析
    这篇文章主要介绍Express连接MySQL及数据库连接池的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Express连接MySQL准备工作打开webstorm新建项目选择express创建一个expres...
    99+
    2023-06-29
  • PHP连接PostgreSQL数据库失败的原因分析
    PHP连接PostgreSQL数据库失败的原因分析及解决方法 在进行网站开发或数据库应用程序开发时,我们经常会使用PHP作为后端语言,并搭配PostgreSQL作为数据库系统。然而,在...
    99+
    2024-02-27
    php 连接失败
  • Oracle数据库ODBC连接失败的原因分析
    Oracle数据库ODBC连接失败的原因可能包括以下几种: 服务器地址或端口号错误:确保在ODBC数据源配置中输入的服务器地址和端口号是正确的,以确保连接到正确的数据库实例。 用户名或密码错误:检查在ODBC数据源配置中输入的用户名...
    99+
    2024-07-15
    oracle
  • 多维数据库Oracle Essbase和IBM Cogons的底层原理
    本篇内容主要讲解“多维数据库Oracle Essbase和IBM Cogons的底层原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“多维数据库Oracle E...
    99+
    2024-04-02
  • 详解MySQL执行原理、逻辑分层、更改数据库处理引擎
    用了那么长时间的MySQL,sql语句相信早已烂熟于心,于是,我就试着去了解它的执行原理,以下是我学习过程中的总结要点。 只要是B/S架构,都是会有客户端与服务端,mysql也不例外。 首先客户端发出一个请...
    99+
    2024-04-02
  • 织梦CMS数据库连接失败的原因分析
    织梦CMS数据库连接失败的原因分析及解决方法 在使用织梦CMS进行网站开发时,经常会遇到数据库连接失败的问题,这给网站的正常运行带来了困扰。本文将针对织梦CMS数据库连接失败的原因进行...
    99+
    2024-04-02
  • 数据库中的索引和锁底层原理是什么
    数据库中的索引和锁底层原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 一、索引在之前,我对索引有以下的认知...
    99+
    2024-04-02
  • MySQL连接数对数据库性能的影响分析
    MySQL连接数对数据库性能的影响分析 随着互联网应用的不断发展,数据库成为了支撑应用系统重要的数据存储和管理工具。在数据库系统中,连接数是一个重要的概念,它直接关系到数据库系统的性能...
    99+
    2024-04-02
  • golang中mysql数据库连接池的示例分析
    这篇文章主要介绍golang中mysql数据库连接池的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!golang的优点golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直接部署到目标...
    99+
    2023-06-15
  • IDEA连接Mysql数据库并执行查询操作的示例分析
    小编给大家分享一下IDEA连接Mysql数据库并执行查询操作的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 1、先写个 Mysql 的链接设置...
    99+
    2023-06-15
  • 【MySQL】使用DBeaver数据库管理工具进行MySQL数据库连接
    一、数据库连接信息填写 服务器地址:填写服务器部署的地址,以及端口号 2、数据库:sys 3、用户名:root 4、密码:服务器上面设置的具体密码 以上信息填写错误的报错提示:Access denie...
    99+
    2023-09-01
    数据库 mysql 服务器 db
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作