关键词:
目录
- H2 Database
- Maven
- H2 配置
- 初始化表与插入数据
- H2 Console
- 小结
TL;DR
今天,我们一起来快速学习下如何在 Spring Boot 2 下配置H2数据库。
H2作为内存数据库,被广泛应用于本地单元测试,开发环境数据表操作,临时数据存储等。
1. H2 Database
什么是 H2 Database?
H2是用Java编写的流行的内存数据库之一,它可以嵌入Java应用程序中,以客户端-服务器模式运行。
Spring Boot 2 集成并使用属性配置为H2提供了支持,并且为了更加方便使用,H2还提供了一个Console控制台来查看数据库,同时还能视图化地执行SQL操作。
2. Maven
Spring Boot 2.x 开始,连接数据库时需要引入spring-boot-starter-jdbc
依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.193</version>
<scope>runtime</scope>
</dependency>
3. H2 配置
3.1. 简单配置
Spring Boot 提供了非常简单的配置项,可以使用简单的属性连接到任何数据库。
spring.datasource.url=jdbc:h2:mem:testdb
#spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
这里,用户名使用sa,密码留空,另外,驱动可以不配,Spring Boot 2会自动识别。
3.2. 持久化配置
使用内存数据库的一大弊端在于:当我们重新启动应用时,所有存储的数据都会丢失。
在这种情况下,数据只能作为临时内存数据,即便如此,我们还是希望能有一个类似临时文件,可以帮助我们保存临时数据。
H2也提供了持久化的配置方法。
# 临时内存存储
spring.datasource.url = jdbc:h2:mem:testdb
# 临时文件存储
spring.datasource.url = jdbc:h2:file:/data/sample
更多持久化,参见:官网database_url说明
4.初始化表与插入数据
为了方便使用,我们可以初始化一些数据来模拟测试,Spring Boot 通过将sql文件放入资源文件夹(/src/main/resources/
)来实现即可。
- schema.sql:初始化表结构
- data.sql:插入默认数据
schema.sql
DROP TABLE IF EXISTS TEST_MAN;
CREATE TABLE TEST_MAN (
id INT AUTO_INCREMENT PRIMARY KEY,
user_name VARCHAR(250) NOT NULL,
email VARCHAR(250) DEFAULT NULL
);
data.sql
INSERT INTO
TEST_MAN (user_name, email)
VALUES
('Mia', 'abc@email.com'),
('Max', 'efg@email.com'),
('Spike', 'xyz@email.com');
初始化配置,通过打开schema和data来开启。
application.properties
spring.datasource.schema=classpath:db/schema.sql
spring.datasource.data=classpath:db/data.sql
5. H2 Console
5.1. 开启H2 Console
默认情况下,H2数据库的控制台视图处于关闭状态。
我们如果想在浏览器中查看和访问它,需要手动打开配置。同时,我们还可以自定义H2控制台的URL,比如,/h2
。
spring.h2.console.enabled=true
spring.h2.console.path=/h2
5.2. 访问H2 Console
在浏览器中输入如下URL,可以查看与访问控制台。
http://localhost:8080/h2
输入配置的用户名和密码,就能看到预先通过SQL文件插入的表结构和默认数据。
6. 小结
到此,我们学习了如何快速使用简单的属性配置,来初始化和访问H2数据库。
欢迎留言评论。
参考资源
附
- github代码地址:
application.properties
最终配置
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=
# 开启 H2 Console
spring.h2.console.enabled=true
# 自定义 H2 Console 的URL路径
spring.h2.console.path=/h2
#初始化
spring.datasource.schema=classpath:db/schema.sql
spring.datasource.data=classpath:db/data.sql
springboot2.x实践记:mail(代码片段)
...邮件发送HTML格式邮件实战测试小结TL;DR本文是实践如何在SpringBoot2中使用JavaMailSender发送邮件:发送简单邮件发送带附件邮件发送HTML格式邮件1.Maven依赖<dependency><groupId>org.springframework.boot</groupId&g 查看详情
springboot2.x实践记:@springboottest(代码片段)
目录@SpringBootTest用@SpringBootTest集成测试用@SpringBootTest单元测试小结TL;DR在SpringBoot中做测试,默认使用@SpringBootTest注解,今天我们就来快速学习如何进行单元测试或集成测试。1.@SpringBootTest运行SprngBoot测试... 查看详情
springboot2.x实践记:@springboottest(代码片段)
目录@SpringBootTest用@SpringBootTest集成测试用@SpringBootTest单元测试小结TL;DR在SpringBoot中做测试,默认使用@SpringBootTest注解,今天我们就来快速学习如何进行单元测试或集成测试。1.@SpringBootTest运行SprngBoot测试... 查看详情
springboot2.x实践记:gson(代码片段)
目录1、Gson依赖2、Gson自动配置3、配置Gson为首选JSON映射器4、完全排除Jackson5、实战6、测试7、小结TL;DR本文,我们一起来实践使用Gson作为首选的json映射器,替换SpringBoot默认的Jackson。1.Gson依赖<dependencies><dependency>... 查看详情
springboot2.x实践记:gson(代码片段)
目录1、Gson依赖2、Gson自动配置3、配置Gson为首选JSON映射器4、完全排除Jackson5、实战6、测试7、小结TL;DR本文,我们一起来实践使用Gson作为首选的json映射器,替换SpringBoot默认的Jackson。1.Gson依赖<dependencies><dependency>... 查看详情
springboot2.x实践记:war包(代码片段)
目录声明为war类型修改Tomcat的作用域重写启动类小结TL;DR虽然SpringBoot默认使用,但某些场景下还是需要打成war包来运行在Tomcat中。下面的方法能快速的打包一个SpringBoot应用为war包。声明为war类型首先,在pom.xml文件中声明... 查看详情
springboot2.x实践记:war包(代码片段)
目录声明为war类型修改Tomcat的作用域重写启动类小结TL;DR虽然SpringBoot默认使用,但某些场景下还是需要打成war包来运行在Tomcat中。下面的方法能快速的打包一个SpringBoot应用为war包。声明为war类型首先,在pom.xml文件中声明... 查看详情
springboot2.x实践记:retry(annotion)(代码片段)
目录1、为什么要重试(retry)?2、spring-retry3、实战4、测试5、小结1.为什么需要重试(retry)?在我们的Web项目中,通常会遇到一些场景,导致业务获取结果异常,比如:网络中断网络超时... 查看详情
springboot2.x实践记:retry(annotion)(代码片段)
目录1、为什么要重试(retry)?2、spring-retry3、实战4、测试5、小结1.为什么需要重试(retry)?在我们的Web项目中,通常会遇到一些场景,导致业务获取结果异常,比如:网络中断网络超时... 查看详情
springboot2.x实践记:h2database(代码片段)
...H2Console小结TL;DR今天,我们一起来快速学习下如何在SpringBoot2下配置H2数据库。H2作为内存数据库,被广泛应用于本地单元测试,开发环境数据表操作,临时数据存储等。1.H2Database什么是H2Database?H2是用Java编写... 查看详情
springboot2.x实践记:h2database(代码片段)
...H2Console小结TL;DR今天,我们一起来快速学习下如何在SpringBoot2下配置H2数据库。H2作为内存数据库,被广泛应用于本地单元测试,开发环境数据表操作,临时数据存储等。1.H2Database什么是H2Database?H2是用Java编写... 查看详情
springboot2.x实践记:mail(代码片段)
...邮件发送HTML格式邮件实战测试小结TL;DR本文是实践如何在SpringBoot2中使用JavaMailSender发送邮件:发送简单邮件发送带附件邮件发送HTML格式邮件1.Maven依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring... 查看详情
springboot2.x实践记:log4j2.xml(代码片段)
目录Maven添加log4j2.xml实战小结TL;DR我们都知道,SpringBoot的默认日志采用的是Logback。今天,我们通过配置log4j2.xm来使用Log4j2日志记录。Maven首先,排除SpringBoot默认的日志记录依赖logback,然后添加log4j2依赖。<depende... 查看详情
springboot2.x实践记:log4j2.xml(代码片段)
目录Maven添加log4j2.xml实战小结TL;DR我们都知道,SpringBoot的默认日志采用的是Logback。今天,我们通过配置log4j2.xm来使用Log4j2日志记录。Maven首先,排除SpringBoot默认的日志记录依赖logback,然后添加log4j2依赖。<depende... 查看详情
springboot2.x实践记:gson(代码片段)
目录1、Gson依赖2、Gson自动配置3、配置Gson为首选JSON映射器4、完全排除Jackson5、实战6、测试7、小结TL;DR本文,我们一起来实践使用Gson作为首选的json映射器,替换SpringBoot默认的Jackson。1.Gson依赖<dependencies><dependency>... 查看详情
springboot2.x实践记:@springboottest(代码片段)
目录@SpringBootTest用@SpringBootTest集成测试用@SpringBootTest单元测试小结TL;DR在SpringBoot中做测试,默认使用@SpringBootTest注解,今天我们就来快速学习如何进行单元测试或集成测试。1.@SpringBootTest运行SprngBoot测试... 查看详情
springboot2.x实践记:h2database(代码片段)
...H2Console小结TL;DR今天,我们一起来快速学习下如何在SpringBoot2下配置H2数据库。H2作为内存数据库,被广泛应用于本地单元测试,开发环境数据表操作,临时数据存储等。1.H2Database什么是H2Database?H2是用Java编写... 查看详情
springboot2.x最佳实践《一》之springboot2.x初体验
SpringBoot2.X最佳实践前言本系列文章,从零基础接触 SpringBoot2.x新版本,基础入门使用,热部署,到整合各个主流框架Redis4.x,消息队列AciveMQ,RocketMQ等,搜索框架ElasticSearch5.6版本,到web-flux反应式编程,到Actuator监控应用信息... 查看详情