Java Spring引导默认H2 jdbc连接(和H2控制台)

Java Spring引导默认H2 jdbc连接(和H2控制台),java,spring,spring-boot,h2,spring-jdbc,Java,Spring,Spring Boot,H2,Spring Jdbc,我只是试图查看spring boot创建的嵌入式H2数据库的H2数据库内容,而我没有在我的应用程序中指定任何内容。我可以看到hibernate JPA正在创建表,但是如果我尝试访问位于下面URL的h2控制台,则数据库没有表 http://localhost:8080/console/ 我看到这样的建议: 但是我不知道在spring boot中把建议的XML放在哪里,即使我这样做了,我也不希望在配置外部数据库时,h2console不再可用,所以我更可能需要使用某种条件代码来处理这个问题(或者允

我只是试图查看spring boot创建的嵌入式H2数据库的H2数据库内容,而我没有在我的
应用程序中指定任何内容。我可以看到hibernate JPA正在创建表,但是如果我尝试访问位于下面URL的h2控制台,则数据库没有表

http://localhost:8080/console/
我看到这样的建议:

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


有没有人有一些示例代码来说明如何让H2控制台在引导中工作(以及找到spring使用的jdbc连接字符串是什么的方法)?

这就是我如何让H2控制台在带有H2的spring boot中工作的。我不确定这是否正确,但由于没有其他人提供解决方案,因此我建议这是最好的方法

在我的例子中,我为数据库选择了一个特定的名称,以便在启动H2控制台(在本例中为“AZ”)时可以输入一些内容。我认为所有这些都是必需的,尽管似乎省略了spring.jpa.database-platform不会有任何影响

在application.properties中:

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
spring.h2.console.enabled=true //Enable the console.
spring.h2.console.path=/h2-console //Path at which the console will be available.
在Application.java(或某些配置)中:


然后您可以访问位于{server}/console/的H2控制台。将其作为JDBC URL输入:JDBC:H2:mem:AZ


基本上,我正确的JDBC URL是:
JDBC:h2:mem:testdb

从Spring Boot
1.3.0.M3
开始,h2控制台可以自动配置

先决条件是:

  • 您正在开发一个web应用程序
  • 已启用Spring引导开发工具
  • H2在类路径上
即使不使用Spring引导开发工具,也可以通过将
Spring.h2.console.enabled
设置为
true

查看部分文档以了解所有详细信息

请注意,以这种方式配置时,控制台可从以下位置访问:

H2 Web控制台(H2控制台属性):


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

我在/resources/application.properties中只有以下属性。运行spring boot后,使用此URL(),H2控制台中的表是可见的,可以读取以查看表数据,您也可以运行简单的SQL命令。有一点,在java代码中,在获取数据时,列名是大写的,即使schema.SQL使用小写名称:)


一个类似的答案和一步一步的指导

  • 向您的
    pom.xml
    build.gradle
  • Maven

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    
  • http://localhost:8080/h2-控制台/
  • 指定
    jdbc:h2:mem:testdb
    作为jdbc URL
  • 您应该将项目中指定的实体视为表

  • 为了获得这些表,您只需创建两个sql文件schema.sql(用于创建表)和data.sql(用于创建表的数据)。这些文件将放在src/main/resources文件夹中。SpringBoot自动检测它们,并在运行时处理其余部分

    如果您在项目中使用的数据库超过2个,请确保使用特定的文件,如(schema-h2.sql——对于h2-DB,schema-oracle.sql——对于oracle-DB)。data.sql也要遵循同样的方法

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

    这里是spring boot的链接

    我的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
    
    您可以按照以下链接中的步骤操作


    如果您使用Spring Boot的开发工具,默认情况下,它附带H2控制台。可以从
    /h2控制台
    /访问它。在登录界面上,对于输入
    JDBC URL
    使用value
    JDBC:h2:mem:testdb
    。注意
    mem
    字符串

    如果不使用Spring Boot的开发工具,可以使用
    Spring.h2.console.enabled=true
    application.properties
    中启用控制台。这将在
    /h2 console
    下启用控制台。如果要更改URL,则可以使用
    spring.h2.console.path=my_console\u path
    添加另一个条目

    默认模式名称是
    testdb


    更多详细信息请参见。

    我发现,对于spring boot 2.0.2.RELEASE,在POM文件中配置spring boot starter数据jpa和com.H2数据库不足以让H2控制台工作。您必须如下配置spring boot devtools。 你也可以在这篇文章中按照Aaron Zeckoski的指示去做

      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
     </dependency>
    
    
    org.springframework.boot
    弹簧靴开发工具
    真的
    
    登录h2控制台时,使用jdbc:h2:mem:testdb作为路径


    显然,如果您更改了Spring引导属性,那么您的数据源可能会有所不同,但似乎您正在努力寻找默认值。就这些!登录H2后,您将看到您的模式。

    检查spring application.properties

    url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB\u关闭\u打开\u退出=错误

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


    用于弹簧靴2.1.1dependencies { compile("org.springframework.boot:spring-boot-devtools") }
    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
    
      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
     </dependency>
    
    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'