LHJ's Blog

SpringBoot H2 Database

Welcome to H2, the Java SQL database. The main features of H2 are:

  • Very fast, open source, JDBC API
  • Embedded and server modes; in-memory databases
  • Browser based Console application
  • Small footprint: around 2 MB jar file size

💬 H2 简介

这是摘自官网对H2数据库的一段话,其大意是:

  • H2是一个开源的数据库,速度非常快,支持JDBC API
  • H2数据库有嵌入式和服务式两种模式,而且是基于内存的数据库
  • H2数据库拥有基于Web页面的控制台
  • 体积小,大约只有2M左右

一般使用到H2数据库的场景是在对写好的模块进行测试的时候,比如说测试dao层对数据库的增删改查等操作的时候。因为H2数据库是基于内存的,所以每一次测试的时候都能保证H2数据库中的数据和第一次测试中的数据是一样的,这样可以屏蔽掉数据改动后对测试的影响。

📖 SpringBoot整合H2数据库

🔖 引入相关依赖

1
2
3
4
5
6
7
8
9
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

🔖 在resources下添加文件

🔹 resources/db/schema.sql

1
2
3
4
5
6
7
8
9
10
DROP TABLE IF EXISTS user;

CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);

🔹 resources/db/data.sql

1
2
3
4
5
6
7
8
DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES
(1, 'zhangsna', 13, 'zhangsan@longhujing.com'),
(2, 'lisi', 24, 'lisi@longhujing.com'),
(3, 'wnagwu', 25, 'wangwu@longhujing.com'),
(4, 'zhaoliu', 26, 'zhaoliu@longhujing.com'),
(5, 'ermazi', 22, 'ermazi@longhujing.com');

🔖 添加必要的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
spring:
jpa:
hibernate:
ddl-auto: update
datasource:
# H2数据库连接驱动
driver-class-name: org.h2.Driver
# 数据库表创建脚本
schema: classpath:db/schema.sql
# 数据库表中数据创建脚本
data: classpath:db/data.sql
# 数据库连接地址(test是数据库名)
url: jdbc:h2:mem:test
# 数据库登陆用户名
username: root
# 数据库登陆密码
password: root
# 数据库平台为H2
platform: h2
# H2数据库配置
h2:
console:
# 启用web控制台
enabled: true
# 设置控制台访问路径(http://localhost:8080/h2)
path: /h2
settings:
# 允许web控制台远程访问
web-allow-others: true

📗 检验成果

在浏览器中输入地址,登陆H2控制台

1
http://localhost:8080/h2

h2-console-login

📑 源码地址

Github


 评论