一.为什么使用 Mybatis?
JDBC 操作数据库太麻烦 : 手动获取连接 , 关闭连接 ; 手动设置参数 , 处理结果集 ; 代码重复 ; 维护成本高
Mybatis : 持久层框架 , 用于简化 JDBC 开发
持久层 : 持久化操作层 , 通常是指数据访问层(dao) , 是用来操作数据库的

特点 : 半自动 ORM 框架 ; 简化 JDBC, 支持写 SQL ; 支持注解+XML 两种写法 ; 自动映射结果集 ; 性能高 , 轻量 , 学习成本低
二 . Mybatis 入门
Mybatis 操作数据库的步骤 :
- 准备工作(创建 SpringBoot 工程 , 数据库表准备 , 实体类)
- 引入 Mybatis 相关依赖 , 配置 Mybatis
- 编写 SQL 语句
- 测试
1.创建工程
1.1 引入依赖


1.2 数据库准备
sql
-- 创建数据库
DROP DATABASE IF EXISTS mybatis_test;
CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;
-- 使用数据库
USE mybatis_test;
-- 创建表[用户表]
DROP TABLE IF EXISTS user_info;
CREATE TABLE user_info (
id INT (11) NOT NULL AUTO_INCREMENT,
username VARCHAR (127) NOT NULL,
password VARCHAR (127) NOT NULL,
age TINYINT (4) NOT NULL,
gender TINYINT (4) DEFAULT 0 COMMENT '1-男 2-女 0-默认',
phone VARCHAR (15) DEFAULT NULL,
delete_flag TINYINT (4) DEFAULT 0 COMMENT '0-正常, 1-删除',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
-- 添加用户信息
INSERT INTO user_info (username, password, age, gender, phone)
VALUES ('admin', 'admin', 18, 1, '18612340001');
INSERT INTO user_info (username, password, age, gender, phone)
VALUES ('zhangsan', 'zhangsan', 18, 1, '18612340002');
INSERT INTO user_info (username, password, age, gender, phone)
VALUES ('lisi', 'lisi', 18, 1, '18612340003');
INSERT INTO user_info (username, password, age, gender, phone)
VALUES ('wangwu', 'wangwu', 18, 1, '18612340004');
1.3 配置文件 application.yml
XML
spring:
application:
name: Mybatis
# 数据库连接配置
datasource:
url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
注意 :
password: 更换为自己 mysql 的密码

1.4 实体类
java
package com.boop.mybatis.model;
import lombok.Data;
import java.sql.Date;
@Data
public class UserInfo {
private Integer id;
private String username;
private String password;
private Byte age;
private Byte gender;
private String phone;
private Byte deleteFlag;
private Date createTime;
private Date updateTime;
}
2.持久层代码

java
package com.boop.mybatis.mapper;
import com.boop.mybatis.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserInfoMapper {
@Select("SELECT * FROM user_info")
List<UserInfo> selectAll();
}
规范 : Mabatis 持久层接口规范一般命名为 xxxMapper
@Mapper 注解 : 表示 Mybatis 中的 Mapper 接口 ; 程序运行时 , 框架会自动生成接口的实现类对象 , 交给 Spring 进行 IOC 管理
@Select 注解 : 代表 select 查询
2.1 创建单元测试(Test 类)
步骤 :
① 在需要测试的 Mapper 接口中 , 右键->Generate->Test

② 选择对应的 测试方法

③ 书写测试代码

java
package com.boop.mybatis.mapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class UserInfoMapperTest {
@Autowired
private UserInfoMapper userInfoMapper;
@Test
void selectAll() {
System.out.println(userInfoMapper.selectAll());
}
}

执行结果 :

注意 : 如果报错 , 请检查 password 和数据库连接
未完!