前言
在上一章节中,我给大家详细讲解了H2数据库的安装配置,接下来我就带大家在Spring Boot中整合H2数据库,实现代码操作。
一. 以内嵌模式整合H2数据库
1. 创建Web项目
我们按照之前的经验,创建一个SpringBoot的Web程序,具体过程略,请参考下图创建。
2. 添加依赖包
然后在pom.xml文件中添加如下依赖包。
<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency>
3. 编写SQL文件
我们在resource目录下创建一个db文件夹,在里面创建一个scheme.sql数据库脚本文件,供程序启动时创建出数据库中的表。
createtable if not exists USER ( USE_ID intnotnull primary key auto_increment, USE_NAME varchar(100), USE_SEX varchar(1), USE_AGE NUMBER(3), USE_ID_NO VARCHAR(18), USE_PHONE_NUM VARCHAR(11), USE_EMAIL VARCHAR(100), CREATE_TIME DATE, MODIFY_TIME DATE, USE_STATE VARCHAR(1));
在db文件夹中再创建另一个data.sql脚本,用来插入数据。
INSERTINTO USER (USE_ID,USE_NAME,USE_SEX,USE_AGE,USE_ID_NO,USE_PHONE_NUM,USE_EMAIL,CREATE_TIME,MODIFY_TIME,USE_STATE)VALUES(1,'一一哥','0',20,'240928198810051234','12345678910','2312119590@qq.com',sysdate,sysdate,'0');INSERTINTO USER (USE_ID,USE_NAME,USE_SEX,USE_AGE,USE_ID_NO,USE_PHONE_NUM,USE_EMAIL,CREATE_TIME,MODIFY_TIME,USE_STATE)VALUES(2,'孙一一','0',22,'240928198810051234','12345678911','2312119590@qq.com',sysdate,sysdate,'0');INSERTINTO USER (USE_ID,USE_NAME,USE_SEX,USE_AGE,USE_ID_NO,USE_PHONE_NUM,USE_EMAIL,CREATE_TIME,MODIFY_TIME,USE_STATE)VALUES(3,'三胖','1',24,'240928198810051234','12345678912','2312119590@qq.com',sysdate,sysdate,'0');
4. 创建配置文件
我们创建一个application.yml配置文件,配置如下信息:
#h2配置spring jpa show-sql true #启用SQL语句的日志记录 hibernate ddl-auto update #设置ddl模式 datasource url jdbc h2 F /H2/db/db02 #配置h2数据库的连接地址 username root #配置数据库用户名 password syc123 #配置数据库密码 driverClassName org.h2.Driver #配置JDBC Driver schema classpath db/schema.sql #进行该配置后,每次启动程序,程序都会运行resources/db/schema.sql文件,对数据库的结构进行操作。 data classpath db/data.sql #进行该配置后,每次启动程序,程序都会运行resources/db/data.sql文件,对数据库的数据操作。 platform h2 #表明使用的数据库平台是h2 h2#h2 web console设置 console settings web-allow-others true #进行该配置后,h2 web consloe就可以在远程访问了。否则只能在本机访问。 path /h2 #进行该配置,你就可以通过YOUR_URL/h2访问h2 web consloe。YOUR_URL是你程序的访问URl。 enabled true #进行该配置,程序开启时就会启动h2 web consloe。当然这是默认的,如果你不想在启动程序时启动h2 web consloe,那么就设置为false。
5. 创建启动类
最后创建一个启动类,启动项目。
packagecom.yyg.boot; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; /*** @Author 一一哥Sun* @Date Created in 2020/3/31* @Description Description*/publicclassH2Application { publicstaticvoidmain(String[] args) { SpringApplication.run(H2Application.class, args); } }
6. 启动程序,进行测试
当我们启动项目后,就会在控制台看到如下信息:
这就意味着我们在jdbc:h2:F:/H2/db/db02路径上创建了一个db02数据库。
7. 查看Web控制台
并且我们可以打开H2的web控制台,可以看到已经成功的自动帮我们创建出了db02这个数据库。
8. 测试查询功能
我们在Web控制台中执行查询功能,可以看到如下结果:
二. 以服务器模式连接H2,实现增删改查
我们在上面的基础之上,对案例进行改造,把H2的连接模式从内嵌模式改成服务器模式,这种连接方式可以同时允许连接多个客户端,而内嵌模式默认情况下只能连接一个客户端。
1. 添加依赖包
还是在pom.xml文件中添加如下核心依赖包。
<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency>
2. 创建User实体类
封装一个User实体类,用于从数据库中读取信息。
packagecom.yyg.boot.domain; importlombok.Data; importjavax.persistence.Entity; importjavax.persistence.Id; /*** @Author 一一哥Sun* @Date Created in 2020/4/1* @Description Description*/publicclassUser { //主键privateIntegerid; privateStringname; privateStringsex; }
3. 创建Repository
利用JPA封装一个Repository接口,实现数据库的增删改查操作。
packagecom.yyg.boot.repository; importcom.yyg.boot.domain.User; importorg.springframework.data.jpa.repository.JpaRepository; /*** @Author 一一哥Sun* @Date Created in 2020/4/1* @Description Description*/publicinterfaceUserRepositoryextendsJpaRepository<User,Integer> { }
4. 手动创建一个H2数据库
这时候我们也可以在H2内存数据库中,手动创建一个新的数据库db05。
5. 修改application.yml配置文件
这时候修改一下application.yml文件中的数据库配置信息。
#h2配置spring jpa database h2 #指定数据库类型 show-sql true #启用SQL语句的日志记录 hibernate ddl-auto update #设置ddl模式 datasource url jdbc h2 tcp //localhost/F /H2/db/db05;AUTO_SERVER=TRUE #配置h2数据库的连接地址;此为service链接模式,只允许一个链接,如果想多个链接,比如测试代码链接和页面的h2控制台链接,请使用混合模式链接,将 JDBC URL 后加上 AUTO_SERVER=TRUE username root #配置数据库用户名 password syc123 #配置数据库密码 driverClassName org.h2.Driver #配置JDBC Driver#schema: classpath:db/schema.sql #进行该配置后,每次启动程序,程序都会运行resources/db/schema.sql文件,对数据库的结构进行操作。#data: classpath:db/data.sql #进行该配置后,每次启动程序,程序都会运行resources/db/data.sql文件,对数据库的数据操作。 platform h2 #表明使用的数据库平台是h2 h2#h2 web console设置 console settings web-allow-others true #进行该配置后,h2 web consloe就可以在远程访问了。否则只能在本机访问。 path /h2 #进行该配置,你就可以通过YOUR_URL/h2访问h2 web consloe。YOUR_URL是你程序的访问URl。 enabled true #进行该配置,程序开启时就会启动h2 web consloe。当然这是默认的,如果你不想在启动程序时启动h2 web consloe,那么就设置为false。
注意:
嵌入式连接模式,只允许一个连接,如果想多个连接,比如在代码中进行连接和h2控制台中连接,可以使用服务器模式或者混合模式来连接。
我们需要将 JDBC URL 后面加上 AUTO_SERVER=TRUE配置属性!
6. 编写Controller测试接口方法
编写一个Controller,定义几个URL接口。
packagecom.yyg.boot.web; importcom.yyg.boot.cache.CacheService; importcom.yyg.boot.domain.User; importcom.yyg.boot.repository.UserRepository; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.web.bind.annotation.*; importjava.util.List; /*** @Author 一一哥Sun* @Date Created in 2020/4/1* @Description Description*/"/user") (publicclassUserController { privateUserRepositoryuserRepository; "/{id}") (publicStringsaveUser( ("id") Integerid) { Useruser=newUser(); user.setId(id); user.setName("特没谱"); user.setSex("女"); userRepository.save(user); return"success"; } "") (publicList<User>getUser() { returnuserRepository.findAll(); } }
7. 编写启动类
最后编写一个启动类,启动项目。
packagecom.yyg.boot; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; /*** @Author 一一哥Sun* @Date Created in 2020/3/31* @Description Description*/publicclassH2Application { publicstaticvoidmain(String[] args) { SpringApplication.run(H2Application.class, args); } }
8. 接口测试
接下来我们在postman中执行添加请求,插入一个id为3的信息。
我们在浏览器中输入如下地址:
http://localhost:8082/login.do
进入到H2的web控制台,可以在Web控制台中看到插入了一个新的数据。
然后我们在浏览器中再执行查询请求,可以查到所有的数据信息。
至此,我们就实现了在Spring Boot中整合H2内存数据库,实现了数据的CRUD操作。
结语
H2作为一个内存数据库,主要是用于开发调试或者是学习,真正开发时是不会使用的,所以对于H2这种内存数据库,各位感兴趣的话就玩一玩,也没必要特别的精通。