MyBatis第一讲:MyBatis

news/2024/11/29 8:55:53/

一、什么是框架

1、1什么是框架

**框架(Framework)**是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法; 另一种定义认为,框架是可被应用开发者定制的应用骨架。开发者可以根据自己的需求定制框架中的某些部分,或者在框架的基础上添加新的功能。实现个性化应用程序开发。

1、2为什么用框架

  • 提高了开发效率和质量。可以利用框架中已经实现好的功能和模式,避免重复造轮子和出现常见的错误。
  • 促进了代码的复用和标准化。开发者可以使用框架中提供的通用组件和接口,减少代码量和维护成本,同时也保证了代码风格和规范的一致性。
  • 增强了应用程序的可扩展性和可维护性。开发者可以根据变化的需求轻松地修改或增加功能,而不影响框架本身或其他模块的稳定性。

1、3常用框架介绍

框架依据提供功能不同,可以简单划分为前端框架、web框架、ORM框架等。

早期比较主流的框架组合为SSH,是指使用struts/struts2,spring,hibernate

现行主流框架组合为SSM,是指使用springMVC,spring,MyBatis

以及目前核心开发框架spring boot

二、MyBatis框架

2、1什么是MyBatis

MyBatis本是apache的一个开源项目IBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。MyBatis是一个基于Java的持久层框架。当前,最新版本是MyBatis 3.5.11,其发布时间是2022年09月18日。

MyBatis官网:http://mybatis.org/

MyBatis官方文档:https://mybatis.org/mybatis-3/zh/

2、2MyBatis的作用

MyBatis 是一个开源、轻量级的数据持久化框架,是 JDBC 的替代方案。MyBatis 内部封装了 JDBC,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,开发者只需要关注 SQL 语句本身。

2、3MyBatis的优点和缺点

优点

  • MyBatis 是免费且开源的。
  • 与 JDBC 相比,减少了 50% 以上的代码量。
  • MyBatis 是最简单的持久化框架,小巧并且简单易学。
  • MyBatis 相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL 写在 XML 中,和程序逻辑代码分离,降低耦合度,便于同一管理和优化,提高了代码的可重用性。
  • 提供 XML 标签,支持编写动态 SQL 语句。
  • 提供映射标签,支持对象与数据库的 ORM 字段关系映射。
  • 支持存储过程。MyBatis 以存储过程的形式封装 SQL,可以将业务逻辑保留在数据库之外,增强应用程序的可移植性、更易于部署和测试。

缺点

  • 编写 SQL 语句工作量较大,对开发人员编写 SQL 语句的功底有一定要求。
  • SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

2、4MyBatis的应用场景

MyBatis 专注于 SQL 本身,是一个足够灵活的 DAO 层解决方案。适用于性能要求高,且需求变化较多的项目,如互联网项目、大数据项目、物联网项目等。

三、MyBatis运行原理

3、1MyBatis核心配置

要在程序中使用MyBatis框架,需要了解MyBatis核心配置,配置好,才能使我们的程序使用起来更准确,更方便

MyBatis核心配置使用xml格式的配置文件进行配置,核心配置文件内容包括:

<?xml version="1.0" encoding="UTF-8" ?><!--配置文件头,标识本文档为xml文件,编码格式为UTF-8-->
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!--引入MyBatis支持-->
<configuration><!--MyBatis根标签,所有配置内容都需要写在configuration中--><properties><!--引入配置文件--></properties><settings><!--设置MyBatis--><setting name="" value=""/></settings><typeAliases><!--设置类映射别名--></typeAliases><typeHandlers><!--设置字段拦截--></typeHandlers><objectFactory type=""><!--设置对象工厂--></objectFactory><plugins><!--设置MyBatis插件【pagenelper分页插件就在这里配置】--><plugin interceptor=""></plugin></plugins><environments default=""><!--设置MyBatis数据源,可以设置多个数据源--><environment id=""><transactionManager type=""></transactionManager><dataSource type=""></dataSource></environment></environments><databaseIdProvider type=""><!--设置MyBatis数据库厂商标识,可以设置不同厂商的不同语句--></databaseIdProvider><mappers><!--设置MyBatis映射器【配置操作接口的mapper.xml】--></mappers>
</configuration>

注意:MyBatis核心配置文件中的内容大部分可以不写,但是一旦写入,核心配置文件中的标签顺序不能随意编写,必须按顺序编写。【顺序为:properties、settings、typeAliases、typeHandlers、objectFactory、plugins、environments、databaseIdProvider、mappers】

3、2MyBatis核心对象

MyBatis有三大核心对象,分别是SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession

  • SqlSessionFactoryBuilder:SqlSessionFactoryBuilder 会生成 SqlSessionFactory,它提供的 build() 方法可以通过配置信息或代码生成SqlSessionFactory。它的最大特点就是用过即丢。创建 SqlSessionFactory 对象之后,这个类就不存在了,因此 SqlSessionFactoryBuilder 的最佳范围就是存在于方法体内,也就是局部变量。
  • SqlSessionFactory:SqlSessionFactory 是工厂接口而不是现实类,他的任务就是创建 SqlSession。SqlSessionFactory 对象一旦创建,就会在整个应用程序过程中始终存在。没有理由去销毁或再创建它,在应用程序运行中也不建议多次创建 SqlSessionFactory。SqlSessionFactory 的作用域是 整个应用程序,即随着应用程序的生命周期一直存在。这种“存在于整个应用运行期间,并且只存在一个对象实例”的模式就是所谓的单例模式。
  • SqlSession:SqlSession 是用于执行持久化操作的对象,类似于 JDBC 中的 Connection。它提供了面向数据库执行 SQL 命令所需的所有方法,可以通过 SqlSession 实例直接运行已映射的 SQL 语句。SqlSession获取映射器。让映射器通过命名空间和方法名称找到对应的 SQL,并发送给数据库,执行后返回结果。SqlSession 对应一次数据库会话。由于数据库会话不是永久的,因此 SqlSession 的生命周期也不是永久的,每次访问数据库时都需要创建 SqlSession 对象。

http://www.ppmy.cn/news/521473.html

相关文章

数据库高级

数据库高级&#x1f985; 文章目录 数据库高级&#x1f985;范式&#x1f98d;什么是范式&#x1f40a;第一范式——1NF&#x1f996;第二范式——2NF&#x1f41f;第三范式——3NF&#x1f409;总结&#x1f419; 五大约束&#x1f40f;主键约束&#x1f421;外键约束&#x1…

spring框架-循环依赖问题(二)

文章目录 什么是循环依赖解决循环依赖的办法知识扩展 什么是循环依赖 两个或多个类之间存在彼此依赖的情况,形成一个循环依赖链 代码&#xff1a; 单例bean的循环依赖&#xff1a; 先了解Bean的生命周期&#xff1a;1.实例化 2.初始化、3.使用 4.销毁 详细了解Bean生命周期…

Python基础篇(二):入门基础必备知识

Python基础篇(一)&#xff1a;如何使用PyCharm创建第一个Python项目(包含tools) 入门基础必备知识 1. 标识符2. 关键字2.1 关键字字典 3. 引号3.1 表示字符串3.2 在字符串中使用引号3.3 创建多行字符串3.4 在注释中使用引号 4. 编码5. 输入输出5.1 输入示例5.2 输出示例5.3 格…

王道2019年计算机考研专业课培训书籍

王道2019年计算机考研专业课培训书籍 4本考研计算机专业课 1、王道2019年操作系统考研复习指导 2、王道2019年计算机网络考研复习指导 3、王道2019年计算机组成原理考研复习指导 4、王道2019年数据结构考研复习指导 2元通道&#xff1a;http://www.jztuan.net/product/vi…

计算机考研推荐的专业课视频链接(408)

王道的视频都是很不多的&#xff0c;小姐姐的声音也很好听哦~~ 下面就附上链接 计算机网络&#xff1a; https://www.bilibili.com/video/BV19E411D78Q?fromsearch&seid13716246991938730366 操作系统&#xff1a; https://www.bilibili.com/video/BV1YE411D7nH/?spm_id_…

计算机考研四门专业课都要考吗,2022考研:计算机专业需要准备哪些科目?

计算机行业的高薪是众人皆知的&#xff0c;因此不论是在高考志愿填写还是在考研的专业选择上&#xff0c;计算机专业的报考热度都一直位居前列。今天&#xff0c;我们就来了解一下2022计算机考研都考哪些科目。 一、专业课 近几年的形式来看&#xff0c;计算机考研很多学校都不…

22考研计算机专业课——数据结构【❤️考研复习指导❤️】

本次复习指导是基于我在21考研初试中我的王道考研数据结构这本书&#xff0c;加上【数据结构与算法设计】这本教材&#xff0c;书上和笔记本上都记满了笔记和重难点&#xff0c;所以在此回顾这些基本知识点&#xff0c;不能做到我当时的面面俱到&#xff0c;但是尽量完整&#…

计算机考研 专业课 数据结构

原链接失效了&#xff0c;文件之前我也删了。。。 现在只有数据结构和网络了 天勤 链接&#xff1a;https://pan.baidu.com/s/1FZkt7FY3WSTYzYRioEWrxA 提取码&#xff1a;ae0i 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦王道 链接&#xff1a;https://pan.…