MyBatis 安装与入门

MyBatis Series

MyBatis 安装与入门: 本文
MyBatis 使用: https://blog.yexca.net/archives/216

MyBatis 是一款优秀的持久层框架,用于简化 JDBC 的开发

MySQL 安装 Windows

下载: https://dev.mysql.com/downloads/mysql/ 下载 ZIP Archive

解压,环境变量配置 MYSQL_HOME PATH 路径 %MYSQL_HOME%\bin

管理员权限打开 cmd,输入 mysql 检测是否配置成功

初始化 MySQL

输入命令

mysqld --initialize-insecure

等待一会,会在 MySQL 目录生成 data 文件夹

注册 MySQL 服务

命令

mysqld -install

启动 MySQL 服务

命令

# 启动mysql服务
net start mysql
# 停止mysql服务
net stop mysql

修改 root 密码

命令

mysqladmin -u root password 1234

登录参数

mysql -u 用户名 -p 密码 -h 要连接的 mysql 服务器的 ip 地址 (默认127.0.0.1) -P 端口号 (默认 3306)
# 例如
mysql -u root -p
# 执行后会提示输入密码

入门实例

首先创建 SpringBoot 工程,勾选 MyBatis FrameworkMySQL Driver 依赖

  1. 数据库
create database mybatis;

use mybatis;

create table user(
    id int unsigned primary key auto_increment comment 'ID',
    name varchar(100) comment '姓名',
    age tinyint unsigned comment '年龄',
    gender tinyint unsigned comment '性别, 1:男, 2:女',
    phone varchar(11) comment '手机号'
) comment '用户表';

insert into user(id, name, age, gender, phone) VALUES (null,'白眉鹰王',55,'1','18800000000');
insert into user(id, name, age, gender, phone) VALUES (null,'金毛狮王',45,'1','18800000001');
insert into user(id, name, age, gender, phone) VALUES (null,'青翼蝠王',38,'1','18800000002');
insert into user(id, name, age, gender, phone) VALUES (null,'紫衫龙王',42,'2','18800000003');
insert into user(id, name, age, gender, phone) VALUES (null,'光明左使',37,'1','18800000004');
insert into user(id, name, age, gender, phone) VALUES (null,'光明右使',48,'1','18800000005');
  1. application.properties
# 配置数据库连接信息

#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=1234
  1. User 类
public class User {
    private Integer id;
    private String name;
    private short age;
    private short gender;
    private String phone;

    public User() {
    }

    public User(Integer id, String name, short age, short gender, String phone) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.phone = phone;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public short getAge() {
        return age;
    }

    public void setAge(short age) {
        this.age = age;
    }

    public short getGender() {
        return gender;
    }

    public void setGender(short gender) {
        this.gender = gender;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                ", phone='" + phone + '\'' +
                '}';
    }
}
  1. UserMapper 接口
@Mapper // 在运行时,会自动生成该接口的实现类对象(代理对象),并且将该对象交给IOC容器管理
public interface UserMapper {
    // 此处采用注解编写SQL语句
    @Select("select * from user")
    public List<User> list();
}
  1. 测试类
@SpringBootTest
class MybatisStartApplicationTests {
    @Autowired
    private UserMapper userMapper;

    @Test
    void contextLoads() {
        List<User> list = userMapper.list();
        list.forEach(System.out::println);
    }

}

数据库连接池

数据库连接池是一个容器,负责分配、管理数据库连接 (Connection)

它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个

释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏

优势:资源复用、提升系统响应速度

官方提供标准接口:DataSource

常见产品:Hikari (SpringBoot 默认) 、Druid

Lombok

在上例中 User 类虽然只定义了几个属性,但需要很多方法从而使得代码臃肿,为此可以使用 Lombok

Lombok 是一个实用的Java类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以自动化生成日志变量,简化java开发、提高效率

注解 作用
@Getter/@Setter 为所有的属性提供 get/set 方法
@ToString 会给类自动生成易阅读的 toString 方法
@EqualsAndHashCode 根据类所拥有的非静态字段自动重写 equals 方法和 hashCode 方法
@Data 提供了更综合的生成代码功能 (@Getter+@Setter+@ToString +@EqualsAndHashCode)
@NoArgsConstructor 为实体类生成无参的构造器方法
@AllArgsConstructor 为实体类生成除了static修饰的字段之外带有各参数的构造器方法

引入 Lombok

引入依赖,不需要版本号,已经被 SpringBoot 设定

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

User 类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Integer id;
    private String name;
    private short age;
    private short gender;
    private String phone;
}

Lombok 会在编译时,自动生成对应的 Java 代码,使用 Lombok 需要安装一个插件,不过 IDEA 默认已安装