当前位置: 首页 > article >正文

为什么要有mybatis?——mybatis

每日一言

        知道为什么有这个东西,才能更深刻地理解它,更熟练地使用它。

首先,我们举一个例子来谈谈

       假设你正在开发一个电商网站,该网站需要处理大量的用户数据、商品数据以及订单数据。在这个过程中,你将频繁地与数据库进行交互,以执行各种查询、插入、更新和删除操作。

       到这里,你会想到Mysql数据库以及SQL语句,配合某种编程语言或框架进行使用,没错。

       如果没有使用MyBatis或其他类似的持久层框架(记住这个词,之后会提到,帮助你理解),你可能需要直接编写大量的JDBC代码来与数据库通信。

你需要做这些:

  1. 加载数据库驱动:每次与数据库交互时,都需要加载相应的数据库驱动。

  2. 创建数据库连接:使用JDBC的DriverManager类来获取数据库连接。

  3. 创建SQL语句:根据业务需求编写SQL查询语句。

  4. 执行SQL语句:通过StatementPreparedStatement对象执行SQL语句。

  5. 处理结果集:如果SQL语句返回结果集,需要遍历结果集并处理数据。

  6. 关闭资源:在执行完数据库操作后,需要关闭StatementResultSetConnection等资源,以避免资源泄露。

       好,不知道你看没看完,总之,你知道了:这个过程很复杂,简单复述就是每一次它都需要重新加载、链接、访问数据库之后再执行操作。同时,还具有一定风险,因为你需要手动关闭资源,你会不会忘?好,那你完了,可能造成资源泄漏。还有SQL注入攻击

而我们的主角mybatis,可以简化这个过程:

  1. 配置MyBatis:在项目中配置MyBatis,包括指定数据库连接信息、映射文件位置等。

  2. 编写映射文件:在映射文件中定义SQL语句和Java对象之间的映射关系。

  3. 使用MyBatis API:通过MyBatis提供的API(如SqlSession)来执行数据库操作。MyBatis会根据映射文件中的配置,自动生成相应的SQL语句,并执行它。

  4. 处理结果:MyBatis会自动将结果集映射为Java对象,你可以直接处理这些对象。

  5. 关闭资源:MyBatis会管理数据库连接和其他资源的生命周期,你不需要手动关闭它们。

       什么?你说一点也不简单!实际项目操作只需要你使用第三步,即调用它的API。

最后,进行一下总结。

       持久层框架提供了一套机制,使得开发者能够以更加抽象和便捷的方式操作数据库,而无需直接编写大量的数据库访问代码(JDBC方式),而MyBatis就是其中的佼佼者。

名词解释

何为JDBC?——(Java Database Connectivity)

       简单来说,就是你通过JDBC提供的接口去链接访问数据库进行操作。JDBC是Java程序与数据库之间交互的桥梁,它提供了一套标准的API,使得Java程序能够以一种通用的方式与各种数据库进行通信。

What it would do?

建立数据库连接——>发送SQL语句——>处理结果

何为API?——(Application Programming Interface)

       就是我们常说的接口,简单来说,就是你可以直接调用人家封装好的程序(函数、组件、软件等等),API充当了软件组件之间的“粘合剂”,允许不同的软件应用程序相互交互,共享数据或功能。


Over!!!



http://www.kler.cn/a/292047.html

相关文章:

  • 2024-11-16 串的存储结构
  • 处理namespace问题:Namespace not specified for AGP 8.0.0
  • 第二十一周机器学习笔记:动手深度学习之——数据操作、数据预处理
  • 深入理解Flutter生命周期函数之StatefulWidget(一)
  • 营销手段的变革:开源 AI 智能名片与 S2B2C 商城小程序在新趋势下的机遇与挑战
  • Spring:bean的配置
  • Gitlab删除本地标签和分支
  • 使用 RabbitMQ 和 Go 构建异步订单处理系统
  • Apple “Glowtime”活动:iPhone 16、Apple Intelligence亮相
  • SQL进阶技巧:给定数字的频率查询中位数 | 中位值计算问题
  • vscode 20 个实用插件
  • 计算机毕业设计选题推荐-高校实验室教学管理系统-Java/Python项目实战
  • c语言中的动态内存管理
  • 面向可信和节能的雾计算医疗决策支持系统的优化微型机器学习与可解释人工智能
  • uni-app应用更新(Android端)
  • C语言预处理详解
  • 彻底解决 node/npm, Electron下载失败相关问题, 从底层源码详解node electron 加速配置
  • 无需更换摄像头,无需施工改造,降低智能化升级成本的智慧工业开源了。
  • ClickHousez中如何定时清理过期数据库?
  • 生信机器学习入门4 - scikit-learn训练逻辑回归(LR)模型和支持向量机(SVM)模型
  • Qt (13)【Qt窗口 —— 颜色对话框 QColorDialog】
  • spring cloud gateway 之删除请求头
  • 【CNN训练梯度裁剪】
  • HarmonyOS $r访问资源
  • MyPrint打印设计器(九)svg篇-圆
  • 【计算机视觉前沿研究 热点 顶会】ECCV 2024中Mamba有关的论文