MyBatis一、MyBatis简介

MyBatis一、MyBatis简介

  • MyBatis 简介
    • MyBatis 定义
    • MyBatis 历史
    • MyBatis 特性
      • 1. 灵活性和易用性
      • 2. 性能优化
      • 3. 易于集成
      • 4. 支持多种数据库
      • 5. 插件机制
      • 6. 其他特性
    • MyBatis 下载
    • 和其他持久化层技术对比

MyBatis 简介

MyBatis 定义

MyBatis 是一个优秀的持久层框架,它内部封装了 JDBC,开发者只需要关注 SQL 本身,不需要花费精力去处理加载驱动、创建连接、创建 statement、关闭连接、处理结果集等繁杂的过程。MyBatis 通过 XML 或注解的方式将要执行的 SQL 语句配置起来,并通过 Java 对象和 SQL 语句映射生成最终要执行的 SQL,最后将 SQL 提交给数据库执行。

MyBatis 的主要特点包括:

  1. 简单易学:MyBatis 本身就很小且简单。没有任何第三方依赖,最简单安装只要两个 JAR 文件加配置几个 SQL 映射文件易于学习,易于使用,通过文档和源代码,你可以很容易地掌握它的用法。

  2. 灵活:MyBatis 不会对应用程序或者数据库的现有设计强加任何影响。SQL 写在 XML 里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,可重用。

  3. 提供映射标签:支持编写动态 SQL 语句,并可重用。

  4. 避免 JDBC 代码和手动设置参数以及获取结果集:MyBatis 可以使用简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通的 Java 对象)为数据库中的记录。

  5. 提供面向接口编程:MyBatis 允许开发者使用接口编程,而不是使用具体的实现类。

  6. 支持存储过程:MyBatis 支持存储过程的调用,可以通过配置映射文件来调用存储过程。

  7. 支持事务处理:MyBatis 提供了简单的事务处理接口,可以方便地进行事务管理。

  8. 支持插件机制:MyBatis 允许开发者编写插件来拦截和修改 MyBatis 的核心行为,如 SQL 语句的生成、参数设置、结果集处理等。

  9. 动态 SQL:MyBatis 提供了强大的动态 SQL 功能,可以根据不同的条件生成不同的 SQL 语句。

  10. 与 Spring 框架集成:MyBatis 可以很方便地与 Spring 框架集成,实现声明式事务管理、依赖注入等功能。

MyBatis 的主要目标是通过简化开发流程,降低开发者的学习成本,使开发者能够更专注于 SQL 本身,而不是花费大量时间处理 JDBC 的低层次细节。

MyBatis 历史

MyBatis的历史可以分为以下几个关键阶段进行概述:

  1. 起源(2002年)

    • MyBatis最初起源于iBATIS项目,该项目由Clinton Begin在2002年发起,旨在提供一个轻量级的、灵活的持久层框架。
  2. 发展(2003年至2009年)

    • 随着iBATIS项目的不断发展,它逐渐在Java Web开发社区中获得了广泛的认可和使用。在此期间,iBATIS支持了自定义SQL、存储过程、高级映射和事务等功能,成为Java Web开发中受欢迎的ORM框架之一。
    • 需要注意的是,尽管有观点认为MyBatis起源于Clinton Begin的iBATIS项目,但也有另一种说法认为JayBling在2003年开始开发iBATIS项目。这两种说法可能源于不同的信息来源和角度。
  3. 重命名与独立(2010年)

    • 2010年,iBATIS项目经过重新设计和改进后,正式更名为MyBatis,并成为一个独立的开源项目。这一变化标志着MyBatis作为一个独立的数据访问框架开始崭露头角。
    • MyBatis 1.0版本在2010年发布,进一步巩固了其在Java Web开发社区中的地位。
  4. 后续发展

    • 自MyBatis 1.0版本发布以来,MyBatis经历了多个版本的迭代和更新,不断引入新的功能和优化。这些更新和改进使得MyBatis在性能、易用性和扩展性等方面都得到了显著提升。
    • 此外,随着Java Web开发技术的不断发展,MyBatis也积极与其他技术和框架进行集成和兼容,以满足更广泛的项目需求。

总结来说,MyBatis作为一款优秀的持久层框架,其历史可以追溯到2002年的iBATIS项目。经过多年的发展和改进,MyBatis逐渐成为一个独立、灵活且功能强大的数据访问框架,并在Java Web开发社区中获得了广泛的应用和认可。

MyBatis 特性

1. 灵活性和易用性

  • 灵活性:MyBatis允许开发者使用XML或注解的方式进行SQL语句的映射,开发者可以根据自己的喜好选择合适的方式进行数据库操作。这种灵活性还体现在支持动态SQL,允许根据条件动态拼接SQL语句,使得SQL语句更加灵活和可复用。
  • 易用性:MyBatis提供了简单易用的API,使得开发者可以轻松地进行数据库操作,而不需要关心底层的数据库连接和事务管理。此外,MyBatis的配置和映射也相对简单,易于学习和使用。

2. 性能优化

  • 性能优化能力:MyBatis具有良好的性能优化能力,可以通过缓存、预编译等技术来提升数据库操作的性能。它支持一级缓存(SqlSession级别的缓存)和二级缓存(Mapper级别的缓存),有效地提升了查询性能。
  • 批量更新和延迟加载:MyBatis还支持批量更新和延迟加载等特性,进一步优化了数据访问性能。

3. 易于集成

  • 与主流框架集成:MyBatis可以与Spring、Spring Boot等框架进行集成,使得开发者可以更加方便地使用MyBatis进行数据库操作。这种易于集成的特性使得MyBatis在各种规模和类型的项目中都能得到广泛应用。

4. 支持多种数据库

  • 跨数据库兼容性:MyBatis支持多种数据库,包括MySQL、Oracle、SQL Server等主流数据库。这使得开发者可以轻松地切换不同的数据库,而不需要修改太多的代码。

5. 插件机制

  • 扩展性:MyBatis提供了插件机制,允许开发人员编写自定义插件来扩展框架的功能。这些插件可以用于实现日志记录、性能监控等功能,增强了MyBatis的灵活性和可扩展性。

6. 其他特性

  • 结果映射:MyBatis支持将查询结果映射为Java对象、Map等形式,使得开发者可以方便地处理查询结果。
  • 参数绑定:MyBatis支持多种参数绑定方式,包括基本类型、POJO、Map等,可以方便地将Java对象和SQL语句进行绑定。

综上所述,MyBatis凭借其灵活性、易用性、性能优化、易于集成、支持多种数据库和插件机制等特性,成为了Java开发中常用的持久层框架之一。

MyBatis 下载

https://github.com/mybatis/mybatis-3
在这里插入图片描述

和其他持久化层技术对比

  1. JDBC (Java Database Connectivity)

    • 定义:Java提供的基础数据库连接接口,用于执行SQL语句并处理结果。
    • 特点
      • 基础、原始:直接操作SQL,没有ORM(对象关系映射)功能。
      • 灵活性高:可以执行任何SQL语句。
      • 代码量大:需要手动编写SQL、处理结果集、管理连接等。
      • 易于出现SQL注入等安全问题(如果不正确使用)。
    • 用途:适用于需要高度控制SQL语句的场景,或者对性能有极高要求的场景。
  2. JPA (Java Persistence API)

    • 定义:Java的持久化API,定义了对象与关系数据之间的映射关系。
    • 特点
      • 标准化:基于JPA的实现(如Hibernate)可以在不同数据库之间移植。
      • ORM支持:通过注解或XML映射文件,将Java对象映射到数据库表。
      • 简化开发:使用JPA Query Language (JPQL) 或 Criteria API 编写查询。
      • 抽象度高:隐藏了JDBC的底层细节。
    • 用途:适用于需要快速开发、高度可移植性的项目。
  3. Hibernate

    • 定义:JPA的一个流行实现,提供了完整的ORM解决方案。
    • 特点
      • 功能丰富:除了JPA定义的特性外,还提供了许多额外的功能,如二级缓存、批量处理等。
      • 自动化程度高:可以自动生成SQL语句,减少了手动编写SQL的工作量。
      • 灵活性强:支持多种数据库方言,提供了丰富的API进行高级操作。
      • 性能优化:内置了多种性能优化策略。
    • 用途:适用于大型、复杂的企业级应用,需要高度自动化的ORM和性能优化。
  4. MyBatis

    • 定义:一个优秀的持久化框架,支持自定义SQL、存储过程以及高级映射。
    • 特点
      • 灵活性强:允许开发人员编写自定义SQL,并提供了XML或注解的方式来映射SQL到Java对象。
      • 易于维护:由于使用了XML或注解来映射SQL,可以方便地修改和调整SQL语句。
      • 高效性:避免了Hibernate等ORM框架在复杂查询时可能产生的性能问题。
      • 便于优化:可以直接操作SQL,方便进行性能调优。
    • 用途:适用于需要高度控制SQL语句、需要频繁进行复杂查询的场景,或者对性能有较高要求的场景。

总结

  • JDBC:基础、原始,适用于需要高度控制SQL的场景。
  • JPA:标准化、高度抽象,适用于需要快速开发、高度可移植性的项目。
  • Hibernate:功能丰富、自动化程度高,适用于大型、复杂的企业级应用。
  • MyBatis:灵活性强、易于维护,适用于需要高度控制SQL、频繁进行复杂查询的场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/673111.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

240602-通过命令行实现HuggingFace文件上传

A. 登录显示 A.1 MacOS A.2 Windows B. 操作步骤 B.1 操作细节 要通过命令行将文件上传到 Hugging Face,可以使用 huggingface-cli 工具。以下是详细步骤: 安装 huggingface_hub 包: 首先,确保已经安装了 huggingface_hub 包。可…

MySQL—函数—数值函数(基础)

一、引言 首先了解一下常见的数值函数哪些?并且直到它们的作用,并且演示这些函数的使用。 二、数值函数 常见的数值函数如下: 注意: 1、ceil(x)、floor(x) :向上、向下取整。 2、mod(x,y):模运算&#x…

Wpf 使用 Prism 开发MyToDo应用程序

MyToDo 是使用 WPF ,并且塔配Prism 框架进行开发的项目。项目中进行了前后端分离设计,客户端所有的数据均通过API接口获取。适合新手入门学习WPF以及Prism 框架使用。 首页统计以及点击导航到相关模块功能待办事项增删改查功能备忘录增删改查功能登录注册…

跨模型知识融合:大语言模型的知识融合

大语言模型(LLMs)在多个领域的应用日益广泛,但确保它们的行为与人类价值观和意图一致却充满挑战。传统对齐方法,例如基于人类反馈的强化学习(RLHF),虽取得一定进展,仍面临诸多难题&a…

7-18 对象关系映射(orm_name)---PTA实验C++

一、题目描述 一开始看到对象关系映射,其实我是拒绝的。这三个词凑一块,能是给C初学者的题吗? 再仔细读需求,才发现在课设项目已经用过这功能。Object Relational Mapping(ORM)就是面向对象(O…

大降分!重邮计算机专硕复试线大降50分!重庆邮电计算机考研考情分析!

重庆邮电大学(Chongqing University of Posts and Telecommunications)简称重邮,坐落于中国重庆市主城区南山风景区内,是中华人民共和国工业和信息化部与重庆市人民政府共建的教学研究型大学,入选国家“中西部高校基础…

【30天精通Prometheus:一站式监控实战指南】第13天:graphite_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们👋   欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀   Prometheus是云原生和DevOps的…

企业im即时通讯WorkPlus私有化部署适配国产信创环境

在信息化时代,高效的沟通和协作对于企业的运营至关重要。企业IM即时通讯平台提供了一种便捷、实时的沟通工具,旨在改善企业的内部和外部沟通效率。然而,随着企业对数据安全性和隐私保护的要求不断提高,许多企业开始选择私有化部署…

【Qt知识】disconnect

在Qt框架中,disconnect函数用于断开信号与槽之间的连接。当不再需要某个信号触发特定槽函数时,或者为了防止内存泄漏和重复执行问题,你可以使用disconnect来取消这种关联。disconnect函数的基本用法可以根据不同的需求采用多种形式&#xff0…

【ORB_SLAM系列3】—— 如何在Ubuntu18.04中使用自己的单目摄像头运行ORB_SLAM3(亲测有效,踩坑记录)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. …

Windows下如何把Oracle从C盘整体迁移到D盘?

(一)写这篇文章的起因 这篇文章适合刚接触的技术小白follow操作,整理文章不易,大家多多点赞转发 起因是昨天有会员在群里发问,客户要把Oracle整个目录从C盘挪到D盘怎么弄 客户那边的人把Oracle整个程序数据文件都安装…

使用 Kali Linux 实现 Smurf 攻击

一、介绍 Smurf攻击是一种分布式拒绝服务(DDoS)攻击,利用IP协议中的ICMP(Internet Control Message Protocol)请求和网络的广播特性,使目标系统被大量ICMP回复包淹没,从而导致系统无法正常提供…

ZDH-数据管理模块

目录 主题 项目源码 预览地址 安装包下载地址 数据管理服务 数据资源管理 数据资源权限 数据资源血缘 总结 感谢支持 主题 本篇文章主要介绍ZDH-数据管理服务及应用场景 项目源码 zdh_web: GitHub - zhaoyachao/zdh_web: 大数据采集,抽取平台 预览地址 后台管理…

【C++】类和对象——构造和析构函数

目录 前言类的六个默认构造函数构造函数1.构造函数的概念2.构造函数的特性 初始化列表1.构造函数整体赋值2.初始化列表 析构函数1.析构函数的概念2.析构函数的特性 前言 类和对象相关博客:【C】类和对象   我们前面一个内容已经讲了关于类好对象的初步的一些知识&…

绿联 安装MariaDB数据库用于Seatable服务

绿联 安装MariaDB数据库用于Seatable服务 1、镜像 mariadb:latest 2、安装 2.1、基础设置 重启策略:容器退出时总是重启容器。 2.2、网络 网络选择桥接(bridge)。 2.3、存储空间 装载路径/var/lib/mysql不可变更。 2.4、端口设置 容器端口3306,本…

7. MySQL 视图、索引

文章目录 【 1. 视图 View 】1.1 视图原理1.2 创建视图 CREATE VIEW1.2.1 创建基于单表的视图1.2.2 创建基于多表的视图 1.3 查看视图1.3.1 查看视图的内容1.3.2 查看视图的详细信息 1.4 修改视图 ALTER VIEW1.4.1 修改视图内容1.4.2 修改视图名称 1.5 删除视图 DORP VIEW 【 2…

Ansys Mechanical|组装 External Mechanical Model

Assembling Finite Element Models 上文中介绍了如何导入外部模型并将其组合到单个模型中的示例。 如果要将外部模型与Workbench环境中已有的一个或多个模型组合在一起,该如何操作?本文将介绍这个工作流程。 Ansys Mechanical支持Mechanical Model和Ex…

移动系统编程-安装和运行Ionic应用程序 (Installation and Running Ionic Apps)

安装 (Installation) 假设您已经安装了Node.js和Angular,您可以使用以下命令安装Ionic: npm install -g ionic/cli您也可以不使用CLI安装Ionic,但如果您使用的是最新版本的Cordova,这样做可能会导致版本不匹配,不推荐…

用幻灯片讲解C++中的C语言风格数组

用幻灯片讲解C中的C语言风格数组 1.栈内存中的C风格数组 糟糕的可用性,但你将在遗留代码中看到它们。相同类型的对象块。大小必须是常量表达式。第一个元素的索引为0,即数组索引从0开始。 注意一下数组的初始化,使用了C11标准之后的统一初始…