Mybatis初识(一)

news2024/11/15 8:46:32

一.Mybatis是什么

MyBatis 是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis 去除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的XML或注解来配置,和映射原始类型、接口和Java POJO (Plain Old Java Objects,普通老式Java对象)为数据库中的记录。
这里附上Mybatis的官网,大家可以去官网看一下介绍
https://mybatis.org/mybatis-3/zh/index.html

二.为什么要学习Mybatis

学习MyBatis是因为它是一个流行且强大的Java持久层框架,具有以下重要原因:

  1. 数据库交互简单: MyBatis使数据库交互变得简单易懂。通过SQL映射和配置,可以轻松执行数据库查询、插入、更新和删除等操作,无需手动编写繁琐的JDBC代码。

  2. 灵活的SQL编写: MyBatis允许编写动态SQL语句,可以根据不同情况构建灵活的查询条件,从而提高代码的可复用性和维护性。

  3. 性能优化: MyBatis支持缓存、预编译SQL等性能优化手段,能够大幅提高数据库查询效率,提升系统性能。

  4. 与现有代码无缝整合: MyBatis可以无缝地与现有Java代码和数据库表结构整合,使得在已有项目中引入MyBatis更加方便。

  5. 支持多种数据库: MyBatis支持多种主流数据库,可以在不同数据库间切换,适用于各种项目需求。

  6. 良好的扩展性: MyBatis是一个开源框架,提供了许多扩展点,允许开发者根据需要进行自定义功能的拓展。

  7. 与Spring等框架集成: MyBatis可以与Spring等框架轻松集成,形成一个完整的应用解决方案。
    看了上面的mybatis的优点以后,我们从传统的JDBC和Mybatis的步骤,来具体的看一下.

2.1 传统JDBC的步骤

  1. 创建数据库连接池 DataSource
  2. 通过 DataSource 获取数据库连接 Connection
  3. 编写要执⾏带 ? 占位符的 SQL 语句
  4. 通过 Connection 及 SQL 创建操作命令对象 Statement
  5. 替换占位符:指定要替换的数据库字段类型,占位符索引及要替换的值
  6. 使⽤ Statement 执⾏ SQL 语句
  7. 查询操作:返回结果集 ResultSet,更新操作:返回更新的数量
  8. 处理结果集
  9. 释放资源

2.2 使用Mybatis的步骤

使用MyBatis的大致流程如下:

  1. 定义数据表和实体类: 首先,根据业务需求设计数据库表,并创建对应的Java实体类来映射数据库表的结构。

  2. 配置数据源和MyBatis: 在项目的配置文件中,配置数据库连接信息和MyBatis的相关设置,包括数据库驱动、连接池、MyBatis配置等。

  3. 编写Mapper接口: 定义Mapper接口,它用于定义数据库操作的方法,每个方法对应一条SQL语句。MyBatis会根据这些接口方法自动生成SQL并执行。

  4. 编写Mapper XML文件: 创建Mapper XML文件,它与Mapper接口相对应,提供SQL语句的具体实现。使用, , , 等标签来编写SQL查询、插入、更新和删除语句。

三.配置MyBatis的环境

让我们开始学习MyBatis的第一步,就是配置它的环境.

  1. 增加环境依赖
    在这里插入图片描述
  2. 设置mybatis的配置信息

在这里插入图片描述

  1. 配置好之后,就直接启动项目
    如果没报错,就证明你启动成功了.
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UDS诊断协议

UDS本质上是一系列服务的集合,包含6大类,共26种。每种服务都有独立的ID,即SID。 请求 SID(1Byte) 参数 SID(1Byte) Sub-function(1Byte) 参数 SID DID(2Bytes) 响应 肯定响应 SID0x40(1Byte) Sub-function(根据请求是否存在) 参数…

【C++进阶】继承

⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏留言 ⭐系列专栏:C进阶 ⭐代码仓库:C进阶 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们的支持是我…

收集springboot2.6和2.7新功能新特性,以便后续项目中使用

更多功能看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/nbcio-boot 前端代码:https://gitee.com/nbacheng/nbcio-vue.git 在线演示(包括H5) : http://122.227.135.243:9888 因为nbcio-boot已经升级到2.7,所以先收集SpringBoot2.6和2.7的新功能,…

数据结构:链表的一些经典的OJ题目

文章目录 写在前面链表OJ调试技巧移除链表元素反转链表链表的中间节点链表中倒数第K个节点链表分割问题 写在前面 本篇为本人学习链表的过程中遇到的典型OJ题,于是整理出来分享思路和便于后续重新学习,每个标题均可跳转至对应习题,大多为Lee…

Autosar通信实战系列02-CAN报文发送周期测试脚本开发及周期不准优化

本文框架 前言1. CAN发送报文的周期测试脚本开发2. 发送报文周期不准的可能原因及优化策略2.1 发送报文的控制逻辑2.2 送报文周期不准的可能原因及优化策略前言 在本系列笔者将结合工作中对通信实战部分的应用经验进一步介绍常用,包括但不限于通信各模块的开发教程,代码逻辑…

nvidia显卡设置 让显卡发挥最大的性能

1、打开官网https://www.nvidia.cn/geforce/drivers/ 查看电脑系统位数和显卡(GPU)的版本 产品系列:Notebooks表示笔记本 2、点击【搜索】-【下载】(game表示游戏驱动)-【下载】 3、双击运行exe文件 4、使用邮箱注册账号时注意要设置正常的年龄 PS设置 1、设置PS使用…

2023 7-29

题目1 删除排序链表重复元素 思路和代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *n…

某ERP系统信息泄露登录后台

漏洞描述 某ERP前台泄露了某api接口,恶意攻击者可通过调用该接口,对用户的账号和密码进行非授权访问,在获取到账号和密码后,恶意攻击者可接管后台。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事…

Unity 工具之 NuGetForUnity 包管理器,方便在 Unity 中的进行包管理的简单使用

Unity 工具之 NuGetForUnity 包管理器,方便在 Unity 中的进行包管理的简单使用 目录 Unity 工具之 NuGetForUnity 包管理器,方便在 Unity 中的进行包管理的简单使用 一、简单介绍 二、NuGetForUnity 的下载导入 Unity 三、NuGetForUnity 在 Unity 的…

文件夹加密软件哪个好?文件夹加密软件排行榜

想要加密文件夹,使用专业的文件夹加密软件可以安全有效地加密电脑文件夹。那么,文件夹加密软件哪个好?文件夹加密软件排行榜了解一下。 TOP 1:文件夹加密超级大师 软件亮点:极致安全,5种文件夹加密类型 文…

EMC学习笔记(二十)EMC常用元件简单介绍(二)

EMC常用元件简单介绍(二) 1.瞬态抑制二极管(TVS)2.气体放电管3.半导体放电管 电磁兼容性元件是解决电磁干扰发射和电磁敏感度问题的关键,正确选择和使用这些元件是做好电磁兼容性设计的前提。由于每一种电子元件都有它各自的特性,…

谈 Scratch 作品 —— “木筏生存”

资源下载链接: https://download.csdn.net/download/leyang0910/88090187 资源情况: 角色数量:3,素材数量:54,积木数量:6349,音频数量:9 游戏说明: 这是一款…

擎创技术流 | 深入浅出运维可观测工具(二):eBPF应用中常见问题

上期跟大家聊了下eBPF的发展历史还有特性,点击这里↓↓↓擎创技术流 | 深入浅出运维可观测工具(一):聊聊eBPF的前世今生,一键回看上期精彩内容。 这期主要跟大家分享下eBPF在应用过程中可能出现的问题,希望…

leetcode 122. 买卖股票的最佳时机 II

2023.7.29 把整体利润拆分成每天的利润&#xff0c;将股票值想象成一个折线图&#xff0c;将所有上升的值相加即可。 代码&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int ans 0;for(int i1; i<prices.size(); i){if(prices[i]-…

神经网络简单介绍

人工神经网络(artififial neural network) 简称神经网络&#xff0c;它是一种模仿生物神经网络结构和功能的非线性数学模型。 神经网络通过输入层接受原始特征信息&#xff0c;再通过隐藏层进行特征信息的加工和提取&#xff0c;最后通过输出层输出结果。 根据需要神经网络可以…

树及其遍历

文章目录 树树定义专业术语树分类 二叉树分类存储连续存储&#xff08;完全二叉树&#xff09;链式存储一般树的存储森林的存储 线索二叉树哈夫曼树构造步骤 遍历先序遍历中序遍历后续遍历 链式二叉树遍历具体代码已知两种遍历序列求原始二叉树已知先序和中序求后序已知中序和后…

mtk桌面壁纸滚动

路径&#xff1a;packages\apps\Launcher3\src\com\android\launcher3 目前代码中是未打开的状态 packages\apps\Launcher3\src\com\android\launcher3\util\WallpaperOffsetInterpolator.java 涉及到的方法有&#xff1a;&#xff08;重要性从上往下&#xff09; updateOffs…

架构的分类

目录 一、 RUP41 架构 1.1 RUP41架构方法概述 1.2 RUP41架构总体 1.3 RUP41架构方法内容 1.3.1 逻辑视图 1.3.2 开发视图 1.3.3 物理视图 1.3.4 处理视图 1.3.5 场景视图 ​二、 TOGAF9 架构 2.1 TOGAF9 架构概述 2.2 TOGAF9 架构分类 2.2.1 业务架构 2.2.2 数据架…

Vue2 第四节 计算属性,监视属性

1.计算属性 2.监视属性 3.计算属性与监视属性之间的关系 一.计算属性 定义&#xff1a;要用的属性不存在&#xff0c;要通过已有属性计算得来原理&#xff1a;底层借助了Object.defineproperty方法提供的getter和setterget函数什么时候会执行&#xff1a;初次读取的时候会执…

银河麒麟安装solr及配置文件修改

下载并解压 将从官网下载的solr.tar.gz解压到目标文件夹 解压命令&#xff1a;tar -zxvf solr-xxx.tar.gz 修改配置文件 进入目录&#xff1a; /home/solr/solr-8.5.1/bin/init.d 修改solr文件里面部分配置 修改solr服务路径 SOLR_INSTALL_DIR"/opt/solr" 改为…