H2数据库是一个开源的关系型数据库,采用Java语言编写的嵌入式数据库引擎,它就是一个类库(因为是Java语言编写的,所以对外提供的是一个jar包文件),可以直接嵌入到应用的项目中,不受平台的限制(一个jar包,随用随引用)。
H2 数据库官网
h2数据库可以有内嵌模式,和服务器模式。如果使用内嵌模式,需要按照以下步骤操作:
h2*.jar
到项目中(H2不需要其他的依赖)JDBC
驱动类:org.h2.Driver
jdbc:h2:~/test
将在本地用户目录下打开一个名为test
的数据库在这个页面中,你可以操作数据库表和数据。
数据库启动后,打开历览器:http:localhost:8082
打开数据库管理页面
可以在配置文件中设置数据密码。
登录进入页面后:
这里可以对数据库表和数据进行操作,可以执行sql语句。
安装对用的H2数据文件(zip文件或者jar文件)
本地安装完成后,对应的文件夹目录及作用如下:
该数据库支持多种连接方式和连接设置。 这是使用不同的数据库 URL 实现的。 URL 中的设置不区分大小写。
INT类型:对应java.lang.Integer REAL类型:对应java.lang.Float DOUBLE类型:对应java.lang.Double DECIMAL类型:对应java.math.BigDecimal,比如DECIMAL(20,2) CHAR类型:对应java.lang.String,比如CHAR(10) VARCHAR类型:对应java.lang.String VARCHAR_IGNORECASE类型:对应java.lang.String,忽略大小写 BOOLEAN类型:对应java.lang.Boolean TIME类型:对应java.sql.Time,当转换成java.sql.Date时,日期会设置成1970-01-01 DATE类型:对应java.sql.Date,格式为yyyy-MM-dd,其时间默认为00:00:00 TIMESTAMP类型:对应java.sql.Timestamp,格式为yyyy-MM-dd hh:mm:ss[.nnnnnnnnn],也支持java.util.Date TINYINT类型:对应java.lang.Byte,-128 to 127 SMARTINT类型:对应java.lang.Short,-32768 to 32767 BIGINT类型:对应java.lang.Long IDENTITY类型:自增类型,对应java.lang.Long,值范围-9223372036854775808 to 9223372036854775807 BINARY类型:二进制字节存储,最大不超过2GB,且完全保存在内存,比如BINARY(1000) BLOB类型:对应java.sql.Blob,与BINARY相似,但针对很大的数据(如文件或图像),且不完全保存在内存,使用PreparedStatement.setBinaryStream来保存数据。 CLOB类型:与VARCHAR相似,但适用于保存很大的数据,且数据不完全保存在内存。用于任意尺寸的XML或HTML文档、文本文件等。使用PreparedStatement.setCharacterStream保存数据。 OTHER类型:对应java.lang.Object,用于存储序列化的Java对象,使用的是字节数组,客户端只能做序列化或反序列化,使用getObject反序列化,使用PreparedStatement.setObject存储数据。 UUID类型:对应java.util.UUID,128位的值,可以使用PreparedStatement.setBytes或setString或setObject(uuid)保存数据,使用ResultSet.getObject取回数据。 ARRAY类型:对应java.lang.Object[]
CURRENT_DATE:取当前日期 CURRENT_TIME:取当前时间 CURRENT_TIMESTAMP:取当前日期时间 LOWER:字符串小写 UPPER:字符串大写 CONCAT:字符串连结 CHAR:ASCII值转字符 ASCII:字符转ASCII值 ENCRYPT:加密函数,支持AES算法,Block尺寸为16字节, 比如CALL ENCRYPT('AES', '00', STRINGTOUTF8('Test')) DECRYPT:解密函数,支持AES算法,Block尺寸为16字节, 比如CALL TRIM(CHAR(0) FROM UTF8TOSTRING( DECRYPT('AES', '00', '3fabb4de8f1ee2e97d7793bab2db1116'))) HASH:哈希函数,只支持SHA256算法,比如CALL HASH('SHA256', STRINGTOUTF8('Password'), 1000) MAX:求最大 MIN:求最小 SUM:求和 CURRENT_USER:返回当前用户 H2VERSION:返回H2数据库的版本 DISK_SPACE_USED:返回表使用的磁盘空间尺寸,比如CALL DISK_SPACE_USED('my_table'); DATABASE_PATH:返回数据库文件的路径和数据库名,比如CALL DATABASE_PATH();
springboot结合hibernate与h2数据库做单元测试,模拟真实数据库时,若使用了@Audited注解,则jpa会自动基于表映射,生成一个记录表操作历史的表,该表以XXX_aud的表明存在,这个表中会自动添加 rev字段和revtype字段,其中revtype字段为tinyint类型,所以,如果模拟的数据库不支持tinyint类型的数据,则该表无法创建。