目录
1. Mybatis 概念
2. 第一个 Mybits 查询
2.1 创建数据库和表
2.2 添加 Mybatis 框架支持
2.3 添加配置文件
2.4 配置 MyBatis 中的 XML 路径
2.5 添加业务代码
在学习 Mybatis 之前,我们需要知道 Mybatis 和 Spring 没有任何的关系。如果一定要强调二者之间的关系的话,那就是 Spring 集成了 Mybatis 框架,使开发更加简单。
也就是说 Mybatis 可以脱离 Spring 使用。
MyBatis 是⼀款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 去除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置 和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
简单来说 MyBatis 是更简单完成程序和数据库交互的工具,也就是更简单的操作和读取数据库工具。
对于后端开发来说,程序是由以下两个重要的部分组成的:
而这两个重要的组成部分要依靠数据库连接工具,我们先来回忆一下 JDBC 的操作流程:
那么,Mybatis 就是用来简化上述操作的,具体通过以下两部分来完成:
我们先来看一下 Mybits 在整个框架的定位:
接下来我们要实现的功能是:使用 MyBatis 的方式来读取用户表中的所有用户,我们使用个人博 客的数据库和数据包,具体 SQL 如下:
-- 创建数据库
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 default now(),
updatetime datetime default now(),
`state` int default 1
) 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)
;
接下来通过安装插件的方式:
插件的使用方法:
同样可以选择需要的依赖:
还可以安装如下图所示的插件,方便数据库相关的信息提示:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mycnblog?characterEncoding=utf8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/**Mapper.xml
用户的实体类:
@Data
public class User {
private Integer id;
private String username;
private String password;
private String photo;
private Date createtime;
private Date updatetime;
}
添加 mapper 接口:
@Mapper
public interface UserMapper {
public List queryAll();
}
新建 mapper 文件夹:
添加 UserMapper.xml 文件:
UserMapper.xml 查询所有用户的具体实现 SQL:
id 表示的就是实现接口里的哪个方法。 resulttype 表示的是返回结果的对象的类型,而不是返回结果的类型(queryAll 返回结果的类型是 List)。
接下来进行自测(单元测试):
接下来在生成的测试方法中加上注解:
编写完整的测试代码如下:
@Slf4j
@SpringBootTest
class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
void queryAll() {
List users = userMapper.queryAll();
log.info(users.toString());
}
}
可以看到,运行后成功的将数据显示: