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 Framework
与 MySQL Driver
依赖
- 数据库
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');
- 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
- 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 + '\'' +
'}';
}
}
- UserMapper 接口
@Mapper // 在运行时,会自动生成该接口的实现类对象(代理对象),并且将该对象交给IOC容器管理
public interface UserMapper {
// 此处采用注解编写SQL语句
@Select("select * from user")
public List<User> list();
}
- 测试类
@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 默认已安装