配置详解

配置使用 YML 格式配置文件

spring:
  datasource:
    url: jdbc:h2:~/testdb
    username: root
    password: root
    driverClassName: org.h2.Driver
    # 数据初始化设置
    schema: classpath:schema.sql
    data: classpath:data.sql
    platform: h2
h2:
    console:
      enabled: true
      path: /h2
      settings:
        web-allow-others: true
        
请不要直接复制此配置,格式可能存在问题。此处项目每次执行时都会执行一遍 schema.sql、data.sql 请注意修改sql。另外 此处的 spring.datasource.schema/data 为默认配置,此处配置只是为了让你知道,意思就是你配不配都会读取classpath 下的这两个文件,除非文件不存在!
  • spring.datasource.url = jdbc:h2:testdb
  • 数据库URL始终需要jdbc:h2:从此数据库开始识别 默认情况下,如果嵌入 URL中指定的数据库尚不存在,则会自动创建一个新的(空)数据库。创建数据库的用户自动成为此数据库的管理员。
  • 按照设计,内存数据库是易失性的,当我们重新启动应用程序时数据将丢失。我们可以使用基于文件的存储来改变这种行为。为此,我们需要更新spring.datasource.url=jdbc:h2:~/testdb 这里使用嵌入模式,使用本地的数据库。
    嵌入模式有以下几种示例:

jdbc:h2:[file:][<path>]<databaseName> jdbc:h2:~/test jdbc:h2:file:/data/sample jdbc:h2:file:C:/data/sample (Windows only) jdbc:h2:[file:][<path>]<databaseName>,前缀file:是可选的。如果不使用或仅使用相对路径,则将当前工作目录用作起点。路径和数据库名称的区分大小写取决于操作系统,但建议仅使用小写字母。数据库名称长度必须至少为三个字符(限制File.createTempFile)。数据库名称不得包含分号。要指向用户主目录,请使用~/,如:jdbc:h2:~/test。 ~/在windows或者CentOS中指的是当前用户的根目录 例如CentOS /home/{currentUser}/ 如果使用 ~/ 则在你的C盘 C:\Users\[username] 下创建一个.h2.server.properties 文件, 配置文件包含应用程序的设置,并在首次启动H2控制台时自动创建。支持的设置是: webAllowOthers:允许其他计算机连接。 webPort:H2控制台的端口 webSSL:使用加密的TLS(HTTPS)连接。 webAdminPassword:用于访问H2控制台的首选项和工具的密码。 你可以在控制台执行sql命令 SCRIPT 以备份数据

注意:数据库URL始终需要jdbc:h2: 开始,本示例使用嵌入模式。除此外还有服务器模式以及混合模式。此处详解嵌入模式,关于其他模式的用法请自行参考官网 OR 简略说明

URL后可加上配置 格式为 ;配置

  • spring.datasource.username / spring.datasource.password

默认情况下,Spring Boot将应用程序配置为使用用户名sa和空密码连接到内存存储.但是,我们可以通过将以下属性添加到application.properties文件来更改这些参数: spring.datasource.username=sa spring.datasource.password=password

  • spring.datasource.platform

此处涉及到H2 的兼容模式。

所有数据库引擎的行为都有所不同。在可能的情况下,H2支持ANSI SQL标准,并尝试与其他数据库兼容。但是仍然存在一些差异:

在MySQL中,默认情况下,文本列不区分大小写,而在H2中,它们区分大小写。但是,H2也支持不区分大小写的列。要使用不区分大小写的文本创建表,请附加IGNORECASE=TRUE到数据库URL(示例:) jdbc:h2:~/test;IGNORECASE=TRUE

此处示例暂不考虑兼容其他数据库,所以使用 spring.datasource.platform=h2

如果你有此方面需求,请参考官网 Compatibility。并在解决此问题之后分享出来。

  • h2.console.*
默认情况下,H2数据库的控制台视图已禁用。我们必须使它能够在浏览器中查看和访问它。请注意,我们可以自定义H2控制台的URL,默认情况下是'/h2-console'。

# 启用 H2 Console
spring.h2.console.enabled=true
 
# 自定义的 H2 Console URL  他相对与项目目前正在运行的端口,因此 此示例访问的路径为 
# http://127.0.0.1:8080/h2  8080是默认的端口,你可以通过server.port 在 此配置文件中配置
spring.h2.console.path=/h2

# 允许远程登录
spring.h2.settings.web-allow-others = true

默认情况下,不允许从TCP连接或Web界面远程创建数据库。出于安全原因,不建议启用远程数据库创建。创建新数据库的用户将成为其管理员,因此获得与H2相同的JVM访问权限,以及与Java和系统帐户允许的操作系统相同的访问权限。建议使用嵌入式URL,本地H2控制台或Shell工具在本地创建所有数据库。
  • spring.datasource.schema / spring.datasource.data
    在初始化时创建模式并插入数据
    我们可能希望使用一些固定模式(DDL)初始化数据库,并在应用程序就绪之前将默认数据(DML)插入表中运行业务用例。
    我们可以通过将sql文件放入资源文件夹(/src/main/resources/)来实现这一点。
  • schema.sql - 初始化模式ie.create表和依赖项。 初始化表sql
  • data.sql - 插入默认数据行。 初始化数据sql

注意: 此处sql必须符合 H2 语法 参考 官网语法

注意: 访问 H2 web Console 时,请注意修改你的 [JDBC URL] 此处的[JDBC URL] 是指打开 http://127.0.0.1:8080/h2 页面显示的 [JDBC URL] 修改为 你的配置文件中的 spring.datasource.url 的值~!