1. What
MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置
和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的
记录。
简单来说 MyBatis 是更简单完成程序和数据库交互的⼯具,也就是更简单的操作和读取数据库工具。
2. Why
为什么要学习MyBatis呢,它重要在哪里?
对于后端开发来说,程序是由以下两个重要的部分组成的:
1.
后端程序
2.
数据库
⽽这两个重要的组成部分要通讯,就要依靠数据库连接⼯具,那数据库连接⼯具有哪些?⽐如之前我们学习的 JDBC,还有今天我们将要介绍的 MyBatis,那已经有了 JDBC 了,为什么还要学习 MyBatis?
这是因为 JDBC 的操作太繁琐了。
关于JDBC我在前面的博客中也有介绍:
JDBC连接数据库小白级教程_用jdbc技术链接数据库-CSDN博客
既然JDBC这么麻烦,我们肯定已经发展了更加高效的工具来实现数据库和后端程序的交互,而这就是
MyBatis,
这就是我们要学习 MyBatis 的真正原因,它可以帮助我们更方便、更快速的操作数据
库。
3. How
这一节会介绍具体怎么使用MyBstis。
简单来说,MyBatis 学习只分为两部分:
- 配置 MyBatis 开发环境;
- 使⽤ MyBatis 模式和语法操作数据库。
3.1 架构了解
开始搭建 MyBatis 之前,我们先来看⼀下 MyBatis 在整个框架中的定位,框架交互流程图:
MyBatis 也是⼀个 ORM 框架,
ORM(Object Relational Mapping),即对象关系映射。在⾯向对象编程语⾔中,将关系型数据库中的数据与对象建⽴起映射关系,进而⾃动的完成数据与对象
的互相转换:
- 将输⼊数据(即传⼊对象)+SQL 映射成原⽣ SQL
- 将结果集映射为返回对象,即输出对象
ORM 把数据库映射为对象:
- 数据库表(table)--> 类(class)
- 记录(record,⾏数据)--> 对象(object)
- 字段(field) --> 对象的属性(attribute)
⼀般的 ORM 框架,会将数据库模型的每张表都映射为⼀个 Java 类。
也就是说使⽤ MyBatis 可以像操作对象⼀样来操作数据库中的表,可以实现对象和数据库表之间的转换,接下来我们来看 MyBatis 的使⽤吧。
3.2 创建项目演示使用
现在我们直接创建一个Spring Boot项目来演示,如何实现对一个用户表(user)的增删改查。
建立用户表的SQL:
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
gender VARCHAR(2) CHECK (gender IN ('男', '女')),
age INT CHECK (age >= 0),
hobbies TEXT
);
新建SpringBoot项目演示(我是通过Idea使用阿里云来创建的,现在官方的Springboot项目创建不支持java8):
3.3 相关配置
创建好项目后,我们还需要配置好两项东西:
- 数据库连接字符串
- MyBatis的XML文件
3.3.1 数据库连接字符串的配置
# 数据库
spring.datasource.url=jdbc:mysql://localhost/csdn?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=xxxxxx
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
3.3.2 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.mybatisdemo1.mapper.UserMapper">
</mapper>
4.具体代码
4.1 实体类
Mybatis可以将从数据库中查出的数据绑定到实体类上。
4.2 定义mapper层接口
现在我想要简单的查看数据库已经存在的user的信息。
4.3 编写mapper对应的XML文件
上面的接口定义了功能,我们只需要在xxx.xml文件中对接口的功能进行实现就好了。
也是在这里完成数据持久成的实现。
注意:<mapper>标签:需要指定 namespace 属性,表示命名空间,值为 mapper 接⼝的全限定名,包括全包名.类名。
4.4 定义Service层接口和实现类
接口:UserService
实现类:UserServiceImpl
4.5 添加Controller
以上代码写完,整个 MyBatis 的查询功能就实现完了,接下来使⽤ postman 来测试⼀下。
4.6 测试结果
总结:
简单的介绍了Mybatis的理论知识以及它的基本使用方法。增删改查的实现大同小异,更多细节会在后面的博客中继续介绍。