Spring Boot 集成 H2 数据库

配置详解

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

参考链接

https://howtodoinjava.com/spring-boot2/h2-database-example/

http://www.h2database.com/html/tutorial.html

https://www.baeldung.com/spring-boot-h2-database

https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/boot-features-sql.html#boot-features-sql-h2-console

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在Spring Boot集成雪花算法生成ID,您可以按照以下步骤进行操作: 1. 首先,添加雪花算法的依赖项。在您的项目的pom.xml文件中,添加以下依赖项: ```xml <dependency> <groupId>com.github.shardingjdbc</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.1.1</version> </dependency> ``` 2. 在您的配置文件(如application.properties或application.yml)中添加Sharding JDBC的配置。例如,您可以使用以下示例配置: ```yaml spring: shardingsphere: datasource: names: ds0 ds0: url: jdbc:h2:mem:ds0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL username: root password: sharding: tables: user: actualDataNodes: ds0.user tableStrategy: inline: shardingColumn: id algorithmExpression: user_$->{id % 2} keyGenerator: column: id type: SNOWFLAKE props: sql.show: true ``` 3. 创建一个实体类,用于映射数据库表。例如,创建一个名为User的实体类,在该类中定义id等字段。 4. 创建一个Repository(数据访问层)接口,用于操作数据库。例如,创建一个名为UserRepository的接口,继承自JpaRepository<User, Long>。 5. 使用@Autowired注解将UserRepository注入到您的服务类中,即可使用雪花算法生成ID进行数据库操作。 现在,您可以使用雪花算法生成ID,并将其保存到数据库中。 请注意,以上步骤是基于Sharding JDBC的配置进行的示例,您可以根据您的需求进行相应的调整和修改。另外,您还可以使用其他方式集成雪花算法生成ID,这只是其中一种方法。希望能对您有所帮助!如有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值