SpringBoot2.x系列教程31--SpringBoot整合H2内存数据库实现CRUD操作

简介: 前言在上一章节中,我给大家详细讲解了H2数据库的安装配置,接下来我就带大家在Spring Boot中整合H2数据库,实现代码操作。一. 以内嵌模式整合H2数据库1. 创建Web项目我们按照之前的经验,创建一个SpringBoot的Web程序,具体过程略,请参考下图创建。2. 添加依赖包然后在pom.xml文件中添加如下依赖包。<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope></dependency><de

前言

在上一章节中,我给大家详细讲解了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*/@SpringBootApplicationpublicclassH2Application {
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*/@Entity@DatapublicclassUser {
@Id//主键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*/@RestController@RequestMapping("/user")
publicclassUserController {
@AutowiredprivateUserRepositoryuserRepository;
@PostMapping("/{id}")
publicStringsaveUser(@PathVariable("id") Integerid) {
Useruser=newUser();
user.setId(id);
user.setName("特没谱");
user.setSex("女");
userRepository.save(user);
return"success";
    }
@GetMapping("")
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*/@SpringBootApplicationpublicclassH2Application {
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这种内存数据库,各位感兴趣的话就玩一玩,也没必要特别的精通。

相关文章
|
3月前
|
安全 Java 应用服务中间件
Spring Boot + Java 21:内存减少 60%,启动速度提高 30% — 零代码
通过调整三个JVM和Spring Boot配置开关,无需重写代码即可显著优化Java应用性能:内存减少60%,启动速度提升30%。适用于所有在JVM上运行API的生产团队,低成本实现高效能。
417 3
|
3月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
667 5
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
800 3
SpringBoot入门 - 添加内存数据库H2
|
9月前
|
缓存 NoSQL Java
基于SpringBoot的Redis开发实战教程
Redis在Spring Boot中的应用非常广泛,其高性能和灵活性使其成为构建高效分布式系统的理想选择。通过深入理解本文的内容,您可以更好地利用Redis的特性,为应用程序提供高效的缓存和消息处理能力。
871 79
|
存储 前端开发 Java
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
190 2
|
9月前
|
人工智能 自然语言处理 Java
对话即服务:Spring Boot整合MCP让你的CRUD系统秒变AI助手
本文介绍了如何通过Model Context Protocol (MCP) 协议将传统Spring Boot服务改造为支持AI交互的智能系统。MCP作为“万能适配器”,让AI以统一方式与多种服务和数据源交互,降低开发复杂度。文章以图书管理服务为例,详细说明了引入依赖、配置MCP服务器、改造服务方法(注解方式或函数Bean方式)及接口测试的全流程。最终实现用户通过自然语言查询数据库的功能,展示了MCP在简化AI集成、提升系统易用性方面的价值。未来,“对话即服务”有望成为主流开发范式。
6909 7
|
运维 监控 Java
为何内存不够用?微服务改造启动多个Spring Boot的陷阱与解决方案
本文记录并复盘了生产环境中Spring Boot应用内存占用过高的问题及解决过程。系统上线初期运行正常,但随着业务量上升,多个Spring Boot应用共占用了64G内存中的大部分,导致应用假死。通过jps和jmap工具排查发现,原因是运维人员未设置JVM参数,导致默认配置下每个应用占用近12G内存。最终通过调整JVM参数、优化堆内存大小等措施解决了问题。建议在生产环境中合理设置JVM参数,避免资源浪费和性能问题。
940 3
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
254 4
|
2月前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。

热门文章

最新文章