前言
在之前总结了Spring系列,包括了最基础的Spring框架,springboot框架,SpringMVC ,以上框架能帮助我们更加便捷的与前端页面进行交互.现在我们遇到了一个问题,就是我们和前端进行交互,我们的数据应该怎么存储和写入呢?在学习Servlet的时候,我们通过JDBC进行连接数据库.主要就是对JDBC的连接操作进行封装,然后获取数据库的连接,进行构造sql语句,每次构造sql语句的时候都要进行获取连接的服务.这样的过程就很繁琐了,接下来我们将迎来一个新的框架--MyBatis框架.这个框架可以取出几乎所有的JDBC代码以及设置参数进行获取结果集.下面就一起来学习一下吧!
目录
1. MyBatis 是什么?
MyBatis 是一种持久层框架,支持自定义 SQL、存储过程 以及 高级映射。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口.简单的来说简单来说 MyBatis 是更简单完成程序和数据库交互的工具,也就是更简单的操作和读取数据库工具。
2. 为什么要学习MyBatis?
对于后端开发,程序是由一下两个重要的部分组成的:
而这两个重要的组成部分要通讯,就要依靠数据库连接工具,那数据库连接工具有哪些?就跟前言部分进行讲述的一样我们学的是JDBC.那我们就借此机会进行回顾一下JDBC编程;
- 1. 创建数据库与连接池DataSource
- 2. 通过DataSource获取数据库连接Connection
- 3. 编写执行?占位符的sql语句
- 4. 通过Connection及sql创建操作命令对象Statement
- 5. 使用Statement进行替换占位符的值,替换的时候要制定替换数据库字段的类型
- 6. 使用Statement执行sql语句
- 7. 查询操作: 返回结果集ResultSet 更新操作:返回更新的数量
- 8. 处理结果集
- 9. 释放资源
上述就是JDBC的整个框架的思路. 整个操作非常的繁琐,我们不但要拼接每⼀个参数,而且还要按照模板代码的方式,⼀步步的操作数据库,并且在每次操作完,还要手动关闭连接等,而所有的这些操作步骤都需要在每个方法中重复书写。这时候我们就要学习新的框架MyBatis框架.
3. 怎么学MyBatis?
4. 第一个MyBatis查询
MyBatis 在整个框架中的定位
MyBatis 也是⼀个 ORM 框架, ORM(Object Relational Mapping),即对象关系映射。在面向对象编程语言中,将关系型数据库中的数据与对象建立起映射关系,进而自动的完成数据与对象
的互相转换:
- 1. 将输入的数据(即传人对象)+SQL 映射成原生的SQL
- 2. 将结果集映射为返回对象,即输出对象
4.1 创建具体的数据库和表
代码如下 :
-- 创建数据库
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 '',
createtime datetime,
updatetime datetime,
`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,
updatetime datetime,
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,
updatetime datetime,
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);
4.2 添加MyBatis环境支持
添加 MyBatis 框架⽀持分为两种情况:⼀种情况是对自己之前的 Spring 项目进行升级,另⼀种情况是创建⼀个全新的 MyBatis 和 Spring Boot 的项目,下面我们分别来演示这两种情况的具体实现。
1. 可以使用在Maven中央仓库进行查找环境依赖 :分别是MyBatis和MySQL 驱动.两者缺一不可.
<!-- 添加 MyBatis 框架 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!-- 添加 MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
<scope>runtime</scope>
</dependency>
2. 使用插件进行生成
安装之后,在pom.xml中右击,点击generate
选择我们的插件
选择依赖
也可以直接在新建SpringMVC 项目的时候进行添加环境依赖.这里就不用在演示了.可以看之前的系列,然后点击sql栏进行添加mybatis和MySQL就可以了.
4.3 配置连接字符串和MyBatis
在项目的配置文件进行配置,可以使用properties也可以使用yml,这里使用yml为例.(建议大家使用yml格式的配置文件).
spring:
datasource:
url: jdbc:mysql://localhost:3306/mycnblog?characterEncoding=utf8&useSSL=false
username: root
password: 111111
driver-class-name: com.mysql.cj.jdbc.Driver
# myBatis xml保存轮径
mybatis:
mapper-locations: classpath:mybatis/*Mapper.xml
configuration: # 配置打印 MyBatis 执行的 SQL
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 配置打印 MyBatis 执行的 SQL
logging:
level:
com:
example:
demo: debug
上述代码大家不用记住,放在自己能随时找到的地方就行.
4.4 添加业务代码
下图是后端开发的工程思路
为什么不直接写成一个,实现具体操作数据库的方法,还要去使用接口加xml进行实现操作数据库?
答案:因为要实现具体的方法就要在方法中使用字符串进行书写sql代码我们不如直接设计一个接口,然后具体的实现将sql交给xml文件,这样看起来更简洁.
这是整个项目的文件目录,我们最好使用下述目录进行构造文件
4.4.1 添加实体类
userinfo
4.4.2 添加 mapper 接口
这里注意,我们也要将接口进行注入到容器中,随着Spring的启动而启动,就需要添加注解@Mapper,和我们之前学过的五大类注解功能是相同的.
4.4.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">
<mapper namespace="com.example.demo.mapper.UserMapper">
</mapper>
在Mapper标签里面添加sql对应xml的标签进行构造操作数据库的sql;
4.4.4 添加 Service
4.4.5 添加 Controller
以上代码写完,整个 MyBatis 的查询功能就实现完了,接下来使⽤ postman 来测试⼀下。
4.4.6 使用postman 测试
5. 结语
上述就就是MyBatis的基本原理以及简单的构建与使用,下一个篇章就要对xml的对应的sql标签进行总结以及讲解下单元测试的使用.最后完成增删改查的基本数据库操作.大家持续关注哦!!谢谢❤️❤️❤️❤️