Springboot整合H2

H2是一個用Java編寫的數據庫,類似tomcat,有自己的安裝包,同時又提供了內嵌功能,只需要引入相關jar包即可.

既然是內嵌的,那麼它的生命週期與當前服務保持一致,即服務啓動時開啓(並初始化),服務停止後數據消失,正是由於這樣的特性,所以特別適合用來做測試.

本文采用Springboot+Spring Jpa + h2做演示.

依賴

關鍵依賴如下,其他請參考源碼

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.200</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

application.yaml

spring:
  datasource:
    platform: h2
    username: sa # 默認用戶名
    password: sa # 默認爲空
    # 此處只展示內存模式,更多請參考http://www.h2database.com/html/features.html#database_url
    url: jdbc:h2:mem:dbtest
    driver-class-name: org.h2.Driver
    # 一定要加classpath前綴,否則無法初始化
    schema: classpath*:h2/schema.sql
    data: classpath*:h2/data.sql
#    initialization-mode: always
  jpa:
    show-sql: true
  h2:
    console:
    # 是否開啓h2控制檯
      enabled: true
      settings:
      # 是否允許遠程訪問console
        web-allow-others: true
      # 默認爲/h2-console,生效前提是${spring.h2.console}=true,表示訪問此URI進入H2控制檯
      path: /h2
mybatis:
  mapper-locations: classpath*:mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

業務邏輯代碼與MyBatis配置

參考源碼

問題

  1. 一開始總是無法初始化H2,後來找到原因:spring.datasource.schemaspring.datasource.data的路徑中一定要加classpath前綴!!!

  2. 添加用戶時入參總爲空

    UserController#addUser參數定義處未添加註解@RequestBody.

參考

SpringBoot整合系列-整合H2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章