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配置
參考源碼
問題
-
一開始總是無法初始化
H2
,後來找到原因:spring.datasource.schema
和spring.datasource.data
的路徑中一定要加classpath
前綴!!! -
添加用戶時入參總爲空
UserController#addUser
參數定義處未添加註解@RequestBody
.