简介
- h2简介 ^1:内存数据库(Embedded database或in-momery database)具有配置简单、启动速度快、尤其是其可测试性等优点,使其成为开发过程中非常有用的轻量级数据库。在spring中支持HSQL、H2和Derby三种数据库
- 官网
springboot整合
添加依赖(jpa等省略)
1
2
3
4
5<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>连接配置
1 | spring: |
- 配置说明
jdbc:h2:file:~/.h2/minions;
文件型存储(默认可省略file:)~
这个符号代表的就是当前登录到操作系统的用户对应的用户目录。minions
代表数据库名(会在~/.h2目录生成minions.mv.db文件)- 如果在项目根目录建立数据文件则可以为
jdbc:h2:./minions;AUTO_SERVER=true;
(运行h2 jar的位置,idea运行则在项目根目录)
- 如果在项目根目录建立数据文件则可以为
jdbc:h2:mem:my_db_name;
内存型存储(在连接的瞬间即可创建数据库),程序关掉则内存数据丢失AUTO_SERVER=true;
表示以TCP服务形式启动数据库。否则项目启动后(数据库启动),idea无法连接数据库(AUTO_SERVER_PORT=9092;
可指明端口,不指明会的话自动识别)
- IDEA数据库工具使用 ^2
- Url:
jdbc:h2:~/.h2/minions;AUTO_SERVER=true;
如果上述spring.datasource.url
中h2的路径为相对路径则在IDEA(必须加AUTO_SERVER=true;)和h2-console中都需要使用绝对路径 - Url类型:
Remote
- 用户名/密码:
sa/sa
- 其他都不需要填写(url处可能报红可忽略)
- Url:
- 使用JPA测试(会自动创建表)
1 | <!-- spring data jpa --> |
1 | // 显示sql语句 |
常用SQL
日期
1 | -- 当前时间和日期(加括号也行) |
常见问题
时区
- 暂未找到解决方案
- 尽量不要使用 CURRENT_TIMESTAMP 等,或者使用
CURRENT_TIMESTAMP AT TIME ZONE
;可通过java获取当前时间,再使用FORMATDATETIME格式化时间 - 无效 https://stackoverflow.com/questions/13176251/set-default-timezone-h2-database
- 尽量不要使用 CURRENT_TIMESTAMP 等,或者使用
参考文章