H2数据库使用-简述

一、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;)

image.png

登录后,便可以看到H2数据库的管理界面了:

image.png

附件:完整的配置

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
喜欢就支持一下吧
点赞0 分享