SpringBoot -- 练习时使用方便的H2数据库
总结1. 介绍2. 特性3. 连接模式以嵌入式(本地)连接方式连接H2数据库使用TCP/IP的服务器模式(远程连接)方式连接H2数据库内存模式附录连接语法4. SpringBoot集成H2数据库附录连接语法 在看一些项目demo时,都会看到使用H2数据库,试了后感觉真的很轻便,很爽,于是尝试一番,写个博客记录一下1. 介绍H2数据库是一个开源的关系型数据库。H2是一个嵌入式数据库引擎,采...
总结
在看一些项目demo时,都会看到使用H2数据库,试了后感觉真的很轻便,很爽,于是尝试一番,写个博客记录一下
1. 介绍
- H2数据库是一个开源的关系型数据库。H2是一个嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时支持网络版和嵌入式版本,有比较好的兼容性,支持相当标准的sql标准,支持集群
- 提供JDBC、ODBC访问接口,提供了非常友好的基于web的数据库管理界面
2. 特性
- 免费、开源、快速;
- 嵌入式的数据库服务器,支持集群,可以随应用启动;
- 提供JDBC、ODBC访问接口,提供基于浏览器的控制台管理程序;
3. 连接模式
以嵌入式(本地)连接方式连接H2数据库
这种连接方式默认情况下只允许有一个客户端连接到H2数据库,有客户端连接到H2数据库之后,此时数据库文件就会被锁定,那么其他客户端就无法再连接了,好处是可以将数据库中的数据持久化到文件中不丢失。
连接语法:jdbc:h2:[file:][<path>]<databaseName>
例如:
jdbc:h2:~/test //连接位于用户目录下的test数据库
jdbc:h2:file:/data/sample
jdbc:h2:file:E:/H2/gacl(Windows only)
使用TCP/IP的服务器模式(远程连接)方式连接H2数据库
这种连接方式就和其他数据库类似了,是基于Service的形式进行连接的,因此允许多个客户端同时连接到H2数据库
连接语法:jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName>
范例:jdbc:h2:tcp://localhost/~/test
内存模式
H2数据库被称为内存数据库,因为它支持在内存中创建数据库和表,但如果使用H2数据库的内存模式,那么我们创建的数据库和表都只是保存在内存中,一旦服务器重启,那么内存中的数据库和表就不存在了
连接语法:jdbc:h2:mem:<databaseName>
范例:jdbc:h2:mem:test
4. SpringBoot集成H2数据库
- 添加h2的依赖
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<!-- <version>1.4.197</version> -->
<scope>runtime</scope>
</dependency>
- 配置application.yml
spring:
datasource:
driver-class-name: org.h2.Driver
# 这里每次服务启动就会加载schema和data的数据进行初始化,内容见附录
schema: classpath:db/schema-h2.sql
data: classpath:db/data-h2.sql
# 这里使用的是嵌入式本地文件模式
url: jdbc:h2:file:D:/Cache/IDEA2019.2.2/WorkSpace/SelfTest/mybatisplus-test/data/mybatis_plus
username: root
password: a123456
# 配置h2的web-console服务
h2:
console:
enabled: true
path: /h2-console
- 配置完之后就可以使用了,非常方便,我们可以使用mybatisplus快速测试一下
- H2的另一个很好的功能就是web console,当服务启动之后就可以直接在浏览器访问数据库了。登录到web界面,然后根据配置文件配置的jdbcurl,username,password填写,连接,就进入到了页面版的控制台。
- 使用内嵌模式的数据库,在项目运行时,通过客户端连接工具时连不上数据库的,会提示already in use,只能通过项目的web console连接。那把web console的路径暴露出去岂不是一件很不安全的事情?其实,web console 只能是服务器本机才能连接,其他机器是没有权限连的,所以大可不必担心这个问题
附录
1.连接语法
2. sql脚本内容
#schema-h2.sql
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)
);
#data-h2.sql
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)