# springboot-h2-demo **Repository Path**: inherit/springboot-h2-demo ## Basic Information - **Project Name**: springboot-h2-demo - **Description**: h2数据库嵌入式开发,集成于springboot - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2025-05-19 - **Last Updated**: 2025-05-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # springboot-h2-demo #### 介绍 h2数据库嵌入式开发,集成于springboot # 简介 数据库H2是一款用java语言编写的开源关系型数据库。 该数据库十分适合作为嵌入式数据库使用,来简便一些小型项目快速搭建及运行。 该文章主要讲作为嵌入式数据库使用。 # H2的优势 - 纯Java编写,不受平台的限制; - 只有一个jar文件,适合作为嵌入式数据库使用; - h2提供了一个十分方便的web控制台用于操作和管理数据库内容; - 功能完整,支持标准SQL和JDBC。麻雀虽小五脏俱全; - 支持内嵌模式、服务器模式和集群。 # h2支持运行三种模式 Embedded (嵌入式) : 无需配置本地(或远程)数据库 ; 数据库连接关闭时,数据与表结构依然存在; In-Memory (内存模式): 同上,区别:数据库连接关闭时,数据与表结构删除; ServerMode(传统模式) : 需要配置本地(或远程)数据库; ## 内存模式的数据库URL ```ymal jdbc:h2:mem: jdbc:h2:mem: jdbc:h2:mem:test_mem jdbc:h2:tcp://localhost/mem:db1 ``` ## 嵌入模式的URL ```ymal jdbc:h2:[file:][] jdbc:h2:~/test jdbc:h2:file:/data/sample jdbc:h2:file:C:/data/sample (Windows only) ``` ## server模式 ```ymal jdbc:h2:tcp://[:]/[] jdbc:h2:tcp://localhost/~/test jdbc:h2:tcp://dbserv:8084/~/sample jdbc:h2:tcp://localhost/mem:test jdbc:h2:ssl://[:]/[] jdbc:h2:ssl://localhost:8085/~/sample; ``` # h2结合springboot使用 ## 添加依赖 可以根据自己的项目选择对应的包 ```pom org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.1 org.projectlombok lombok com.baomidou mybatis-plus-boot-starter 3.2.0 com.h2database h2 ``` ## 配置application.yml ```yml spring: datasource: driver-class-name: org.h2.Driver schema: classpath:db/schema.sql #,每次启动程序,程序都会运行schema.sql文件,对数据库的数据操作 data: classpath:db/data.sql #,每次启动程序,程序都会运行data.sql文件,对数据库的数据操作 url: jdbc:h2:file:./db/h2db #配置h2数据库的连接地址,该项目主要以嵌入式 username: root password: 123456 h2: console: enabled: true #开启web console功能 ``` ## schema.sql ```sql DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年龄', email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (id) ); ``` ## data.sql ```sql INSERT INTO user (id, name, age, email) VALUES (1, 'Eli', 18, 'Eli@example.com'), (2, 'Jack', 10, 'Jack@example.com'), (3, 'Tom', 28, 'Tom@example.com'), (4, 'Sandy', 21, 'Sandy@example.com'), (5, 'Billie', 24, 'Billie@example.com'); ``` ## User.java ```java @Data public class User { private Long id; private String name; private Integer age; private String email; } ``` ## UserDao.java ```java @Mapper public interface UserDao extends BaseMapper { } ``` ## H2Application.java ```java @SpringBootApplication public class H2Application { public static void main(String[] args) { SpringApplication.run(H2Application.class,args); } @Resource private UserDao userMapper; @RestController public class TestController { @GetMapping(value = "/users") public List users() { return userMapper.selectList(null); } } } ``` ## 测试 访问`http://localhost:8080/users` ![D798EAB28BE145509E2F0A5518EB2ACF.png](http://www.nick-hou.cn/upload/2020/04/D798EAB2-8BE1-4550-9E2F-0A5518EB2ACF-cf36c4813fd8476480da91a3cfb9bcea.png) ## Web管理 访问`http://localhost:8080/h2-console` 填写数据库连接信息,测试连接 ![01A8BFCCBFB74CF5A3075086B6682416.png](http://www.nick-hou.cn/upload/2020/04/01A8BFCC-BFB7-4CF5-A307-5086B6682416-d4c9ff8b46ba44afad47dd5365cb1e32.png) h2的web管理页面 ![88B156969CA74A4B9ED9CB037890265F.png](http://www.nick-hou.cn/upload/2020/04/88B15696-9CA7-4A4B-9ED9-CB037890265F-0f1d623672154ac696e086f104462e50.png) # 项目源码地址 https://gitee.com/KimHX/springboot-h2-demo.git #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)