配置详解
配置使用 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 的值~!