SpringBoot 练习:使用 H2 数据库
选择依赖
用idea
带的 spring-initializr 创建工具创建一个新项目,依赖如下
配置 application.yml
# 开发环境配置
server:
# 服务器的HTTP端口,默认为80
port: 80
servlet:
# 服务的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# tomcat最大线程数,默认为200
max-threads: 800
# Tomcat启动初始化的线程数,默认值25
min-spare-threads: 30
# Spring配置
spring:
datasource:
driver-class-name: org.h2.Driver
# 启动数据库的初始化模式:never从不,EMBEDDED仅初始化嵌入式数据源,ALWAYS始终初始化数据源。
# initialization-mode: never # 默认 EMBEDDED
schema: classpath:sql/schema.sql # 每次启动程序,运行schema.sql文件,创建数据表
data: classpath:sql/data.sql #,每次启动程序,运行data.sql文件,填充数据
# url: jdbc:h2:mem:test #配置h2数据库的连接地址
url: jdbc:h2:file:E:/database/h2/test #配置h2数据库的连接地址
username: root
password: root
h2:
console:
enabled: true #开启web console功能
path: /h2 # web 控制台的访问路径
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
# MyBatis
mybatis:
typeAliasesPackage: com.example.demo.entity
mapperLocations: classpath*:mapper/**/*Dao.xml
configuration:
mapUnderscoreToCamelCase: true
#Sql日志输出
logging:
level:
com.example.demo.dao: trace # 改成你的mapper文件所在包路径
创建测试数据
datasource.schema
用到的sql
如下
DROP TABLE IF EXISTS poem;
CREATE TABLE poem (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
title varchar(16) NOT NULL COMMENT '诗词标题',
content varchar(255) NOT NULL COMMENT '诗词内容',
author varchar(16) NOT NULL,
PRIMARY KEY (id)
)
datasource.data
用到的sql
如下
INSERT INTO poem VALUES ('1', '痴情癫', '<p>多情黯叹痴情癫,痴情苦笑多情难。</p><p>相思自古无良药,从来独步赴黄泉。</p>', '笑虾');
INSERT INTO poem VALUES ('2', '爱云说', '<p>一壶泪,暗淡醇香味。</p><p>化作万樽与谁对?</p><p>忧举杯,乐举杯,地老天荒只一醉。</p><p>欲哭时,男儿无泪。</p><p>千般相思苦。</p><p>杯中汇...</p>', '笑虾');
访问效果
http://localhost/poem/selectOne?id=1
Demo源文件
访问 H2 数据库
- SpringBoot 服务启动后就可以访问 http://localhost:8080/h2-console/
端口号就是当前服务的端口
问题
版本问题
注意版本问题:比如从访问一个别人创建的本地h2数据库文件
,很有可能默认版本不兼容导致报错,要自己手动设置:
使用默认版本,我启动失败报:
org.h2.jdbc.JdbcSQLNonTransientException: General error: "java.lang.IllegalStateException: Unable to read the page at position 70368748811782 [1.4.200/6]" [50000-200]
查看一下当前springboot项目默认的版本:
再问清楚对方本地h2数据库文件
是哪个版本创建的。比如我这里就手动添加了版本。搞定。
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.196</version>
<scope>runtime</scope>
</dependency>