一、H2简介
H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
H2数据库具有以下优势:
- 可以同应用程序打包在一起发布,方便地存储少量结构化数据;
- 用于单元测试,支持内存存储数据,当每一个用例执行完,随即还原到初始状态;
- 兼容常见的主流关系型数据库,比如DB2、Oracle、MS SQL Server、Mysql等;
- 基于浏览器的控制台应用程序;
二、H2在Springboot的集成
springboot使用H2数据库非常简单。在Maven中下的H2依赖就可以了
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.172</version>
<scope>runtime</scope>
</dependency>
复制代码
三、H2的配置
1.数据源类型和数据驱动类的配置:
以Hikari为例:
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.h2.Driver
复制代码
2.数据存储位置的配置
数据存储在内存中:
#h2 内存数据库 内存模式连接配置 库名: myDb
url:jdbc:h2:mem:myDb;MODE=MySQL;DATABASE_TO_LOWER=TRUE
数据存储在本地磁盘
#h2 内存数据库,内存模式,数据文件test, 数据库名: myDb,用户名:sa
url:jdbc:h2:~/test:myDb;MODE=MySQL;DATABASE_TO_LOWER=TRUE;USER=sa
3.表结构的创建与数据初始化
可以为H2配置两个sql文件用于程序启动时的数据表的创建与初始化;
spring:
datasource:
schema: classpath:sql/init.sql #创建表结构
data: classpath:sql/data.sql #初始化数据
注:如上配置,通常在resource目录下创建sql目录,并添加init.sql和data.sql文件;
4.控制台的配置
可以通过 http://localhost:8080/h2Console 来访问H2控制台;
spring:
h2:
console:
enabled: true
settings:
trace: true #开启h2 console 跟踪 方便调试 默认 false
web-allow-others: true #允许console 远程访问 默认false
path: /h2Console #h2 访问路径上下文
复制代码
注意:控制台中的JDBC URL一定要与你配置文件找中的URL一致;(改为:url: jdbc:h2:~/test:myDb;)
登录后,便可以看到H2数据库的管理界面了:
附件:完整的配置
server:
port: 8082
spring:
application:
name: zhangliao_mybatis_plus_crud
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.h2.Driver
#h2 内存数据库 持久化模式连接配置 库名: myDb
#url: jdbc:h2:~/test:myDb;MODE=MySQL;DATABASE_TO_LOWER=TRUE;USER=sa
#h2 内存数据库 内存模式连接配置 库名: myDb
url: jdbc:h2:mem:myDb;MODE=MySQL;DATABASE_TO_LOWER=TRUE;USER=sa
schema: classpath:sql/init.sql
data: classpath:sql/data.sql
hikari:
connection-timeout: 30000 # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒
minimum-idle: 10
maximum-pool-size: 100
auto-commit: true
idle-timeout: 600000 # 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),默认:10分钟
max-lifetime: 28000000 # 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms,建议设置比数据库超时时长少60秒,参考MySQL wait_timeout参数(show variables like '%timeout%';) -->
connection-test-query: SELECT 1
validation-timeout: 3000
h2:
console:
enabled: true
settings:
# 开启h2 console 跟踪 方便调试 默认 false
trace: true
# 允许console 远程访问 默认false
web-allow-others: true
path: /h2Console
mybatis-plus:
configuration:
cache-enabled: false
local-cache-scope: statement
global-config:
banner: false
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END