SpringBoot集成H2内存数据库实现快速原型开发
最近在忙RocketMQ社区的线下开发者训练营的事情,需要准备一个实战课题的demo。
考虑到现场的环境复杂,比如:网络信号不一定很好,每个学员的机器环境不完全一致。因此我决定尽量减少外部组件的依赖,能用内置的就用内置:
缓存不使用Redis,而是用ConcurrentHashMap;数据库不用MySQL了,改用H2嵌入式数据库。
本文就重点整理一下H2嵌入式数据库的整合过程。
简介H2
首先简单的介绍下H2数据库。
H2是Thomas Mueller提供的一个开源的、纯java实现的关系数据库。
h2数据库特点
(1)性能、小巧
(2)同时支持网络版和嵌入式版本,另外还提供了内存版
(3)有比较好的兼容性,支持相当标准的sql标准
(4)提供了非常友好的基于web的数据库管理界面 –引自百度百科
度娘是这样介绍的,总结一下就是说H2支持标准的SQL,性能不错而且有一个管理界面,重要的,使用H2可以不依赖外部环境。
依赖引入
废话不多说,我们开搞。
首先建立一个SpringBoot应用,版本基于2.1.5.RELEASE, 具体过程按下不表,这个在笔者的历史文章中已经说过多次了。接着引入H2的Maven依赖,具体内容如下:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
ORM还是使用MyBatis,我们引入Mybatis的SpringBoot的starter如下:
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
数据源初始化脚本引入
接着我们将数据库的初始化脚本引入。
在classpath下建立一个目录 db ,也就是resources下。接着在resources中建立两个sql文件,schema.sql与data.sql。
schema.sql为数据库的初始化sql,也就是DML。data.sql中为初始化数据的sql,也就是DML,一般是insert语句。
具体内容如下:
schema.sql
DROP TABLE IF EXISTS t_seckill_product;
CREATE TABLE t_seckill_product (
id int primary key auto_increment,
gmt_create timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
gmt_update timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
prod_id varchar NOT NULL DEFAULT '-1' COMMENT '商品id',
prod_name varchar NOT NULL DEFAULT '-1' COMMENT '商品名称',
prod_status int NOT NULL DEFAULT '0' COMMENT '商品状态,0-上架,1-下架',
prod_stock int NOT NULL DEFAULT '0' COMMENT '商品库存',
prod_price DECIMAL(10, 3) NOT NULL DEFAULT '0.000' COMMENT '商品售价'
);
这里以一个商品表为例。
data.sql
INSERT INTO t_seckill_product VALUES
('1', '2019-06-14 13:57:36', '2019-06-14 13:57:54', 'pid_0001', 'iphoneX2019新款', '0', '100', '5999.000');
data.sql中为需要初始化加载的sql,如果没有则保持data.sql为空即可。但data.sql这个空文件需要有,否则会报错。
application.properties中添加H2配置
########################################################################
#
# H2配置
#
#########################################################################
#db schema
spring.datasource.schema=classpath:db/schema.sql
#db data
spring.datasource.data=classpath:db/data.sql
#remote visit
spring.h2.console.settings.web-allow-others=true
#console url
spring.h2.console.path=/h2
#default true
spring.h2.console.enabled=true
spring.h2.console.settings.trace=true
#db url,default :jdbc:h2:mem:testdbsa
spring.datasource.url=jdbc:h2:mem:testdbsa
#driver default:org.h2.Driver
spring.datasource.driver-class-name=org.h2.Driver
#default sa
spring.datasource.username=sa
#default null
spring.datasource.password=
将H2的配置信息添加到application.properties中,默认用户名为sa,默认密码为空。
除了url、驱动、用户名、密码外,我们关注一下 spring.h2.console.path 这个配置,它表示H2管理界面的相对路径。
启动测试
启动应用,确认控制台输出正常,我的样例的端口是8070,访问 http://localhost:8070/h2 看到如下界面。
输入我们之前配置的用户名sa,点击connet,进入管理页面。可以看到,H2为我们提供了一个较为方面的操作UI,这里我以查询商品信息为例执行以下sql。
能够看到,H2为我们返回了友好的查询结果。
小结
到此我们就整合完成H2,然后就可以按照之前操作MySQL、Oracle等的方式去操作它了,更多的使用技巧就由聪明你继续探索吧!我们下篇文章再见。
版权声明:
原创不易,洗文可耻。除非注明,本博文章均为原创,转载请以链接形式标明本文地址。