嵌入式数据库H2的使用以及集成Spring Boot的操作示例,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
前面讲一些Mybatis特性的时候总是要写一些例子演示给粉丝。用Mysql或者其他很大的数据库太重了,因为只是个demo而已。当然也可以使用docker来安装。但是还是需要依赖一些东西。有没有非常小巧而且便于携带的数据库,而且能满足很小场景的数据库。当然有。今天介绍一种纯java编写而且支持jdbc的嵌入式关系型数据库H2。
H2数据库的特点:
非常快,开源,支持JDBC API
嵌入式和服务器模式;内存数据库
基于浏览器的控制台应用程序
占用空间小,jar只有2MB大小
以上只是官网列出的特点。其实还有跨平台的优势,支持目前常见的大部分平台。还兼容常见的主流关系型数据库,比如DB2、Oracle、MS SQL Server、Mysql、PostgreSQL、HSQLDB、Ignite、Derby等。
基于以上的特点。H2数据库特别适用于快速构建的小型应用。尤其在应用开发中和单元测试中使用非常方便,而且节省系统资源。而且springboot的依赖池也收录了H2数据库。接下来我们通过springboot结合Mybatis来对H2数据库进行一些特性的讲解演示。
springboot使用H2数据库非常简单。集成BOM下的H2依赖就可以了。这里为了演示我们还引入了Mybatis。
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>com.h3database</groupId> <artifactId>h3</artifactId> <scope>runtime</scope> </dependency>
当然引入依赖还不够我们还需要对其他参数进行配置。当然这些配置可以通过springboot的 application.yml(application.properties)来完成。我们知道H2支持像tomcat一样内嵌到springboot应用中,也支持独立的server进程模式。通过不同的配置我们来演示一下。
内嵌模式,就是把在应用中引入H2,启动应用的同时,会把H2数据服务也启动,应用中既包含了H2数据库的服务端,同时应用又作为客户端来连接H2数据库。
内存模式就是数据库文件存在于内存中,没有持久化,当应用进程关闭时数据库与数据表会消失。为了独立环境,我们利用springboot的profile特性来隔离不同模式的环境配置。我们定制一个名称为application-inner.yml
来测试内嵌模式。配置如下:
spring: datasource: # 驱动 driver-class-name: org.h3.Driver # h3 内存数据库 内存模式连接配置 库名: mybatis url: jdbc:h3:mem:mybatis # 初始化数据表 DDL schema: classpath:sql/init.sql # 初始化数据 DML data: classpath:sql/data.sql h3: # 开启console 访问 默认false console: enabled: true settings: # 开启h3 console 跟踪 方便调试 默认 false trace: true # 允许console 远程访问 默认false web-allow-others: true # h3 访问路径上下文 path: /h3-console # 日志 logging: level: cn: felord: debug # mybatis 配置 mybatis: mapper-locations: classpath:mapper/*.xml configuration: map-underscore-to-camel-case: true type-aliases-package: cn.felord.mybatis.entity type-handlers-package: cn.felord.mybatis.type
springboot项目 通过指定 --spring.profiles.active=inner
启动后,输入http://localhost:8080/h3-console,进入H2数据的控制台:
一定要注意红框按照你配置文件中的spring.datasource.url
来设置,不要用默认值。如果没有设置密码直接点connect,设置密码了输入。进入下列界面:
因为我们在初始化指定了DDL 、 DML SQL脚本,创建了student表,而且插入了3条数据。所以会呈现出来。证明集成成功。同时我们执行maven 工程的测试包也会成功完成Mybatis 单元测试。但是我们关闭应用后数据会丢失因为这些数据存在于内存中。内存是会被回收的。不信你注释掉 spring.datasource.schema
和spring.datasource.data
重启看看。那么如何持久化呢?这就用到嵌入模式了。
嵌入模式就是数据库文件存在于应用当前的硬盘内,进行了持久化,当应用进程关闭时数据库与数据表不会消失。我们只需要将5.1的yml配置中的 spring.datasource.url
改为jdbc:h3:file:E:/H2/mybatis
。然后启动重新登录console。注意url要改为jdbc:h3:file:E:/H2/mybatis
哦。发现数据都在,然后我们关闭再启动发现报错了:
说明数据库中的数据冲突了。我们注释掉DDL、DML初始化发现又能启动了。证明数据持久化了。url 中 file: 后缀你系统的可用路径,H2就能把数据持久化到该路径下。
开始我们提到H2可以兼容很多数据库。如何兼容呢?通过url后缀MODE参数来设置,总结一下自己使用:
Oracle jdbc:h3:~/test;MODE=Oracle或SQL语句SET MODE Oracle
Mysql jdbc:h3:~/test;MODE=MySQL;DATABASE\_TO\_LOWER=TRUE
PostgreSQL jdbc:h3:~/test;MODE=PostgreSQL;DATABASE\_TO\_LOWER=TRUE
MS SQL Server jdbc:h3:~/test;MODE=MSSQLServer或SQL语句SET MODE MSSQLServer
其他不一一列举,但是注意兼容也不是完全兼容,会有一些注意事项和微小的差别。一般不会出现问题。进一步了解可查阅官方文档和其他资料。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。