SpringBootdefault H2 jdbc 连接(和 H2控制台)

我只是试图查看嵌入式 H2数据库的 H2数据库内容,当我没有在 application.properties中指定任何内容并从 mvn spring: run 开始时,spring-boot 会创建这个数据库。我可以看到 hibernate JPA 创建表,但是如果我尝试在数据库下面的 URL 访问 h2控制台,就会发现没有表。

http://localhost:8080/console/

我看到了这样的建议: 查看由 Spring 启动的嵌入式 H2数据库的内容

但是我不知道在 spring-boot 中将建议的 XML 放在哪里,即使我知道,我也不希望 h2console在配置外部数据库时不再可用,因此我更可能需要使用某种条件代码来处理它(或者在最理想的情况下允许 spring 自动处理它,在这种情况下,我只在 maven 配置文件被激活时包含 H2)。

Does anyone have some sample code showing how to get the H2 console working in boot (and also the way to find out what the jdbc connection string that spring is using is)?

285845 次浏览

这就是我如何让 H2控制台在使用 H2的弹簧引导中工作的。我不确定这是否正确,但是因为没有其他人提供解决方案,所以我建议这是最好的方法。

In my case, I chose a specific name for the database so that I would have something to enter when starting the H2 console (in this case, "AZ"). I think all of these are required though it seems like leaving out the spring.jpa.database-platform does not hurt anything.

属性:

spring.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

在 Application.java (或某些配置)中:

@Bean
public ServletRegistrationBean h2servletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
registration.addUrlMappings("/console/*");
return registration;
}

然后您可以在{ server }/sole/访问 H2控制台,输入 JDBC URL: JDBC: H2: mem: AZ

As of Spring Boot 1.3.0.M3, the H2 console can be auto-configured.

The prerequisites are:

  • 你正在开发一个网络应用程序
  • 启用了 Spring 启动开发工具
  • H2在类路径上

即使您不使用 Spring 引导开发工具,您仍然可以通过将 spring.h2.console.enabled设置为 true来自动配置控制台

了解所有详细信息,请参阅 这个部分的文档。

Note that when configuring in this way the console is accessible at: http://localhost:8080/h2-console/

来自 http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

H2Web 控制台(H2Console 属性) :

spring.h2.console.enabled=true //Enable the console.
spring.h2.console.path=/h2-console //Path at which the console will be available.

在 application.properties 文件中添加上述两行代码就足以访问 H2数据库 web 控制台,使用默认的用户名(sa)和密码(空,当 ui 提示时不要输入密码)。

I had only below properties in /resources/application.properties. After running spring boot, using this URL(http://localhost:8080/h2-console/), the table in H2 console was visible and read to view the table data, also you can run simple SQL commands. One thing, in your java code, while fetching data, the column names are upper-case, even though schema.sql is using lower-case names :)

spring.datasource.initialize=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=- 1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true

A similar answer with Step by Step guide.

  1. Add Developer tools dependency to your pom.xml or build.gradle

玛文

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>

格拉德尔

dependencies {
compile("org.springframework.boot:spring-boot-devtools")
}
  1. http://localhost:8080/h2-console/访问数据库
  2. 指定 jdbc:h2:mem:testdb为 JDBC URL
  3. 您应该将您在项目中指定的实体看作一个表。

In order to get the tables all you need to do is create 2 sql files schema.sql(for table creation) and data.sql(data for the created tables). These files to be put in src/main/resources folder. Spring boot auto detects them and takes care of the rest during runtime.

如果在项目中使用超过2 DB 的文件确保使用特定的文件,比如(schema-h2.sql —— for h2 DB,schema-oracle.sql —— for oracle DB)。对于 data.sql 也是如此。

还可以通过在 schema.sql 中添加 drop table 语句作为第一条语句来确保删除表。避免附加重复记录。

弹簧靴的链接在这里。

我的 application.properties 如下所示。

spring.datasource.url=jdbc:h2:~/file/Shiva;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.platform=h2
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.datasource.initialize=true
spring.error.whitelabel.enabled=true
spring.h2.console.path=/console
spring.datasource.continue-on-error=true
spring.jpa.hibernate.ddl-auto=create
spring.hibernate.hbm2ddl.auto=update
spring.hibernate.show_sql=true

你可按以下连结的步骤进行。

Https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/

如果您使用 SpringBoot 的开发人员工具,它默认启用了 H2控制台。可以从 /h2-console/进入。在登录界面上,对于输入 JDBC URL使用值 jdbc:h2:mem:testdb。注意 mem字符串。

如果不使用 SpringBoot 的开发工具,可以使用 spring.h2.console.enabled=trueapplication.properties中启用控制台。这将启用 /h2-console下的控制台。如果您想要更改 URL,那么您可以使用 spring.h2.console.path=my_console_path添加另一个条目。

默认的架构名称是 testdb

详情请参阅 Spring 引导文档

这是我在 Spring boot 2.0.2中发现的。在 POM 文件中配置 spring-boot-starter-data-jpa 和 com.h2数据库并不足以使 H2控制台工作。您必须按以下方式配置 spring-boot-devtools。 你也可以选择遵循 Aaron Zeckoski 在这篇文章中的指示

  <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>

在登录到 H2控制台时,使用 jdbc: H2: mem: testdb 作为路径。

显然,如果你改变了 Spring Boot 的属性,你的数据源可能会有所不同,但是看起来你正在为如何找到默认属性而挣扎。就是这样!登录到 H2后,您将看到您的模式。

检查弹簧应用性能

Url = jdbc: h2: mem: testdb; DB _ CLOSE _ DELAY =-1; DB _ CLOSE _ ON _ EXIT = FALSE

这里 testdb 是数据库定义的 确保 h2控制台具有相同的值,否则它将连接到默认的 db

enter image description here

对于直接从 Spring Initialzr 生成的 SpringBoot2.1.1:

  1. Devtools的默认设置是 < a href = “ http://127.0.0.1:8080/h2-sole/”rel = “ norefrer”> http://127.0.0.1:8080/h2-console/

    • POM: Spring-boot-starter,h2,spring-boot-starter-web,Spring-boot-devtools
  2. 如果没有 devtools -您需要在 properties: spring.h2.console.enabled=true spring.h2.console.path=/h2-console中设置它

    • POM: Spring-boot-starter,h2,spring-boot-starter-web

一旦您到达那里-设置 JDBC URL: JDBC: h2: mem: testdb (默认设置不起作用)

I had made a very stupid mistake when I had this same problem. I had added H2 DB for running unit test cases and hence I had set the scope to test in pom.xml. While running the application using mvn spring:run I removed the scope and it works fine now.

对于 Spring Boot 2.3.3.3. 直接从 Spring Initialzr 发布:

POM: data jpa,h2,web

应用程序属性: spring.h2.console.enabled=true

When you run the application look for line like below in the run console:

2020-08-18 21:12:32.664  INFO 63256 --- [           main] o.s.b.a.h2.H2ConsoleAutoConfiguration    : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:eaa9d6da-aa2e-4ad3-9e5b-2b60eb2fcbc5'

现在使用以上针对 h2控制台的 JDBC URL 并单击 Connect