第一个MyBatis查询

news2024/9/22 5:28:15

在这里插入图片描述
⭐️前言⭐️

在连接程序与数据库的工具中,我们之前使用的是JDBC技术,但是JDBC的操作流程极为繁琐,因此才有了更优秀框架——MyBatis,下边我们一起来看这个优秀框架MyBatis的操作与使用。

🍉欢迎点赞 👍 收藏留言评论 📝私信必回哟😁

🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言

🍉博客中涉及源码及博主日常练习代码均已上传GitHub


请添加图片描述

📍内容导读📍

  • 🍅1.什么是MyBatis?
  • 🍅2.第一个MyBatis查询
    • 2.1 创建MyBatis项目
      • 2.1.1 创建项目添加相关依赖
      • 2.1.2 配置数据库连接字符串和MyBatis(保存的XML目录)
        • 配置数据库连接信息
        • 配置MyBatis的XML保存路径
      • 2.1.3 创建数据库和数据表(用于测试)
    • 2.2 使用MyBatis的操作模式操作数据库
      • 2.2.1 添加实体类
      • 2.2.2 添加mapper接口
      • 2.2.3 添加UserMapper.xml
      • 2.2.4 添加Service
      • 2.2.5 添加Controller
      • 2.2.6 测试
  • 🍅3.总结:MyBatis执行流程图

🍅1.什么是MyBatis?

MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis去除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。

简单来说,MyBatis是更简单完成程序和数据库交互的工具,也就是更简单的操作和读取数据库的工具

MyBatis也是一个ORM框架,ORM(Object Relational Mapping),即对象关系映射。在面向对象编程语言中,将关系型数据库中的数据与对象建立起映射关系,进而自动的完成数据与对象的互相转换:

1.将输入数据(即传入对象)+ SQL映射成原生SQL
2.将结果集映射为返回对象,即输出对象

ORM把数据库映射为对象:

  • 数据库表(table) --> 类(class)
  • 记录(record,行数据) -->对象(object)
  • 字段(filed) --> 对象的属性(attribute)

一般的ORM框架,会将数据库模型的每张表都映射为一个Java类。
也就是说使用MyBatis可以像操作对象一样来操作数据库中的表,可以实现对象和数据库表之间的转换,接下来我们来看MyBatis具体该如何使用吧。

🍅2.第一个MyBatis查询

2.1 创建MyBatis项目

2.1.1 创建项目添加相关依赖

此步骤分为两种情况,一种是需要创建新项目,这时直接进行勾选相关依赖即可,而如果是旧项目,直接在pom.xml文件中使用插件添加MyBatis相关依赖即可。

新项目:
在这里插入图片描述

老项目:
在这里插入图片描述
完成相关依赖的添加后,先不要急着启动项目,需要完成下一步配置才能够连接上数据库。
在这里插入图片描述

2.1.2 配置数据库连接字符串和MyBatis(保存的XML目录)

配置数据库连接信息

在开发环境和生产环境都需要进行数据库连接信息的配置。
在这里插入图片描述

配置MyBatis的XML保存路径

在主配置文件中配置运行的环境和MyBatis的XML保存路径
在这里插入图片描述

2.1.3 创建数据库和数据表(用于测试)

-- 创建数据库
drop database if exists mycnblog;
create database mycnblog DEFAULT CHARACTER SET utf8mb4;

-- 使用数据数据
use mycnblog;

-- 创建表[用户表]
drop table if exists  userinfo;
create table userinfo(
    id int primary key auto_increment,
    username varchar(100) not null,
    password varchar(32) not null,
    photo varchar(500) default 'default.png',
    createtime datetime default now(),
    updatetime datetime default now(),
    `state` int default 1
) default charset 'utf8mb4';

-- 创建文章表
drop table if exists  articleinfo;
create table articleinfo(
    id int primary key auto_increment,
    title varchar(100) not null,
    content text not null,
    createtime datetime default now(),
    updatetime datetime default now(),
    uid int not null,
    rcount int not null default 1,
    `state` int default 1
)default charset 'utf8mb4';

-- 创建视频表
drop table if exists videoinfo;
create table videoinfo(
  	vid int primary key,
  	`title` varchar(250),
  	`url` varchar(1000),
		createtime datetime default now(),
		updatetime datetime default now(),
  	uid int
)default charset 'utf8mb4';

-- 添加一个用户信息
INSERT INTO `mycnblog`.`userinfo` (`id`, `username`, `password`, `photo`, `createtime`, `updatetime`, `state`) VALUES 
(1, 'admin', 'admin', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1);

-- 文章添加测试数据
insert into articleinfo(title,content,uid)
    values('Java','Java正文',1);
    
-- 添加视频
insert into videoinfo(vid,title,url,uid) values(1,'java title','http://www.baidu.com',1);

将代码在MySQL客户端进行复制运行。

2.2 使用MyBatis的操作模式操作数据库

下图按照后端开发的工程思路,也就是下面的流程来实现MyBatis操作数据库。
在这里插入图片描述
在我的文章【Spring更简单的存储和读取Bean】1.3中有下边这样一幅图,展示了程序各个工程的分层,所以我们实现业务代码就是需要按照这样的分层来实现。
在这里插入图片描述
先在项目的启动类的同一级目录中创建包,做好项目的分层工作。
在这里插入图片描述

2.2.1 添加实体类

model包下先添加用户的实体类
在这里插入图片描述

2.2.2 添加mapper接口

数据持久层的接口定义:
在这里插入图片描述

2.2.3 添加UserMapper.xml

数据持久层的实现,MyBatis的固定xml格式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace 要设置是实现接口的具体包名加接口名 -->
<mapper namespace="com.example.demo.mapper.UserMapper">
</mapper>

在这里插入图片描述

2.2.4 添加Service

在service包下实现服务层代码:
在这里插入图片描述

2.2.5 添加Controller

在controller包下实现控制器层:
在这里插入图片描述

2.2.6 测试

在浏览器中输入URL进行测试:
在这里插入图片描述

🍅3.总结:MyBatis执行流程图

在这里插入图片描述


⭐️最后的话⭐️
总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正😁

请添加图片描述

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

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

相关文章

Innodb存储引擎-锁(数据库锁的查看、快照读当前读、MVCC、自增长与锁、外键与锁、行锁、并发事务的问题、阻塞、死锁、锁升级、锁的实现)

文章目录锁lock 与latch读锁/写锁/意向锁INNODB_TRX/INNODB_LOCKS/INNODB_LOCK_WAITS一致性非锁定读(快照读)一致性锁定读(当前读)MVCC版本链Read View流程自增长与锁外键和锁行锁类型记录锁(record lock)间隙锁(gap lock)下一键锁(next-key lock)并发事务带来的问题阻塞死锁锁…

数据挖掘Java——DBSCAN算法的实现

一、DBSCAN算法的前置知识 DBSCAN算法&#xff1a;如果一个点q的区域内包含多于MinPts个对象&#xff0c;则创建一个q作为核心对象的簇。然后&#xff0c;反复地寻找从这些核心对象直接密度可达的对象&#xff0c;把一些密度可达簇进行合并。当没有新的点可以被添加到任何簇时…

7.加载properties属性文件

一、加载properties属性文件 目的&#xff1a;将数据库的连接参数抽取到一个单独的文件中&#xff0c;与Spring配置文件解耦 1. 编写jdbc.properties属性文件 jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://127.0.0.1:3306/spring_db jdbc.usernameroot jdbc.passwo…

基于萤火虫算法改进的DELM预测-附代码

萤火虫算法改进的深度极限学习机DELM的回归预测 文章目录萤火虫算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机&#xff08;DELM&#xff09;原理3.萤火虫算法4.萤火虫算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1…

代码中的坏味道

学习笔记自https://zhuanlan.zhihu.com/p/141435233 识别代码中的坏味道系列 如下图是工作中常见的代码的坏味道&#xff1a; 上图中的坏味道出自《重构》这本书&#xff0c;虽然并不是全部&#xff0c;但是涵盖了日常中最常见的一些代码坏味道。 接触这些坏代码可以分为三类&…

【Linux】shell 及权限理解

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《学会Linux》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;shell命令…

计算机基础学习笔记:操作系统篇之硬件结构,存储层次结构

二、存储器的层次结构 本文知识来源小林Coding阅读整理思考&#xff0c;原文链接请见该篇文章 存储层次 寄存器高速缓存&#xff0c;Cache 1-3级内存磁盘&#xff08;SSD&#xff0c;HDD&#xff09; 关键点 各层次的存储的 介质、速度、容量 以及工作层次理解CPU Cache的作…

【Spring]SpringMVC

一、SpringMVC简介 1、什么是MVC MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M&#xff1a;Model&#xff0c;模型层。指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 实体类Bean&#xff1a;专门存储业务数据…

【qt Spin Box | Double Spin Box输入小部件函数学习篇】

Spin Box | Double Spin Box输入小部件函数学习篇【1】UI设计布局【2】setMinimum | setMaximum【3】setPrefix | setSuffix【4】setValue【5】setDisplayIntegerBase【6】setSingleStep【7】value【8】举例【1】UI设计布局 【2】setMinimum | setMaximum setMinimum 此属性保持…

点对点网络与广播式网络的区别

目录 一、点对点网络与广播式网络的区别 二、结点和节点 一、点对点网络与广播式网络的区别 写下本文的原因是笔者在学习计算机网络第一章时看到了下面王道书上的一句话&#xff0c;我不理解这句话想表达的是谁需要“分组存储转发和路由选择机制”。于是当时得出了一个错误…

Python读取excel内容追加到mysql表中赋予字段注释

前言 由于最近遇到一个实体类有特别多的字段&#xff0c;我就想自己一个地在表中创建&#xff0c;并写注释未免太浪费人力和时间了&#xff0c;然后在网上查找资料&#xff0c;果不其然让我看到了一个可以使用Python读取excel内容追加到mysql表中赋予字段注释&#xff0c;这简…

前端零碎知识随笔

一、介绍 本篇博客主要使用来记录一些比较零碎的知识点&#xff0c;都是本人在日常开发工作中遇到的&#xff0c;或者是在学习过程中遇到的。因为这些知识点都比较零碎&#xff0c;为了防止遗忘&#xff0c;所以特意写一篇博客来记录&#xff0c;后面也不会不断慢慢更新的。 …

[附源码]计算机毕业设计Python-大学生健康档案管理(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

JSP+MySQL基于ssm的环保数据自动采集及预测系统

在21世纪的今天,随着科技的进步和发展,人们的生活逐渐趋于自动化、便捷化、数据化。而发展总会有代价,科技的进步总是伴随着环境的恶化。人类用智慧将地球的资源充分利用,以便丰富人们的生活,推动国家的进步。回过头去看,地球的环境已经成为威胁人类长久生存的主要问题之一。在…

34-Vue之ECharts高级-调色盘

ECharts高级-调色盘前言调色盘主题调色盘全局调色盘局部调色盘渐变颜色前言 本篇来学习下ECharts中调色盘的使用 调色盘 它是一组颜色&#xff0c;图形、系列会自动从其中选择颜色, 不断的循环从头取到尾, 再从头取到尾, 如此往复主要分三种&#xff1a;主题调色盘、全局调色…

基于GDAL的gdb格式数据读写功能实现

一、GDAL类库下载&#xff1a; 下载地址&#xff1a;GISInternals Support Site 比如我下载的是release-1930-x64-gdal-3-4-2-mapserver-7-6-4 点击release-1930-x64-gdal-3-4-2-mapserver-7-6-4的链接&#xff0c;下载这两个文件 二、解压文件和安装gdb插件 1.下载好的两个…

Innodb存储引擎-备份和恢复(分类、冷备、热备、逻辑备份、二进制日志备份和恢复、快照备份、复制)

文章目录备份和恢复分类冷备热备逻辑备份mysqldumpSELECT...INTO OUTFILE恢复二进制日志备份与恢复快照备份(完全备份)复制快照复制的备份架构备份和恢复 分类 &#xff08;1&#xff09;根据备份的方法可以分为&#xff1a; Hot Backup&#xff08;热备&#xff09;&#x…

【图像去噪】中值+均值+Lee+Kuan图像滤波【含Matlab源码 1179期】

⛄一、图像去噪及滤波简介 1 图像去噪 1.1 图像噪声定义 噪声是干扰图像视觉效果的重要因素&#xff0c;图像去噪是指减少图像中噪声的过程。噪声分类有三种&#xff1a;加性噪声&#xff0c;乘性噪声和量化噪声。我们用f(x,y&#xff09;表示图像&#xff0c;g(x,y&#xff0…

ADI Blackfin DSP处理器-BF533的开发详解63:DSP接总线屏的硬件和驱动设计(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 EBIU总线LCD屏 硬件实现原理 LCD2.4 寸液晶屏子卡板连接在 ADSP-EDU-BF53x 开发板的扩展端口 PORT1 和 PORT2 上&#xff0c;板卡插入时&#xf…

基于JAVA的水产批发系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;