Spring Boot 集成 H2 数据库

1. 引言

Spring Boot 以其简洁的配置和快速开发能力,成为现代微服务架构的首选框架之一。而H2数据库作为一个轻量级的内存数据库,非常适合开发阶段作为嵌入式数据库进行单元测试和功能验证。本文将手把手教你如何在Spring Boot项目中集成H2数据库,实现数据的快速存取与管理。

2. H2数据库所需依赖

<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>compile</scope>
</dependency>

3. H2数据库application.yaml配置文件

spring:datasource:url: jdbc:h2:~/userdriver-class-name: org.h2.Driverusername: rootpassword: 123456h2:console:path: /h2-console  #h2嵌入式数据库控制台enabled: true

4. 初始化h2数据库

注意:

schema为初始化sql路径

 

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.ApplicationContext;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.init.ScriptUtils;
import org.springframework.stereotype.Service;import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import java.io.File;/*** 初始化h2数据库*/
@Slf4j
@Service
// DataSource创建完后才初始化此类
@AutoConfigureAfter(DataSource.class)
public class H2DataSourceConfig {//初始化sqlprivate static final String schema = "classpath:db/schema-h2.sql";@AutowiredDataSource dataSource;@AutowiredApplicationContext applicationContext;@PostConstructpublic void init() throws Exception {//初始化本地数据库String userHome = System.getProperty("user.home");//获取系统用户目录File f = new File(userHome + File.separator + "h2.lck");if (!f.exists()) {log.info("--------------初始化h2数据----------------------");f.createNewFile();Resource resource = applicationContext.getResource(schema);ScriptUtils.executeSqlScript(dataSource.getConnection(), resource);} else {log.info("--------------h2数据库已经存在----------------------");}}
}

 5. 初始化sql语句

在resources目录下创建db/schema-h2.sql文件。

DROP TABLE IF EXISTS student;
CREATE TABLE student
(id BIGINT NOT NULL COMMENT 'id',name VARCHAR(30)  COMMENT '姓名',age INT COMMENT '年龄',PRIMARY KEY (id)
);
insert into student(id,name,age) values(1, 'zhangsan',23);
insert into student(id,name,age) values(2, 'lisi',45);
insert into student(id,name,age) values(3, 'wangwu',12);

6. 启动项目 

访问路径为:http://localhost:8080/h2-console

7. 访问数据库 

1. 填写登录信息,如下图所示:

2. 如果有student表,并且有数据,说明数据库配置成功

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Open3D 显示带有强度的点云数据

目录 一、概述 1.1强度信息的意义 1.2应用场景 二、代码实现 三、实现效果 一、概述 在点云数据中&#xff0c;强度&#xff08;Intensity&#xff09;指的是激光雷达传感器在扫描环境时&#xff0c;每个点返回的反射强度值。这些强度值代表了激光脉冲返回的能量&#xff…

centos 破解密码

重启您的CentOS系统。 在GRUB引导加载器启动过程中&#xff0c;当看到启动画面时&#xff0c;按下e键进入编辑模式。 找到以 linux16 或 linux 开头的启动行。 在该行的末尾添加 rd.break 或者ro&#xff08;只读&#xff09;修改为 rw 加init/sysroot/bin/sh参数&#xff0…

Nacos详解

nacos官方文档&#xff1a;https://nacos.io/ 一、什么是nacos&#xff1f; Nacos是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 nacos官方文档&#xff1a;https://nacos.io/ nac…

数据结构--栈(图文)

栈是一种基本的抽象数据类型&#xff0c;具有后进先出的特点。在栈这种数据结构中&#xff0c;元素只能在一端进行插入和删除操作&#xff0c;这一端被称为栈顶&#xff08;Top&#xff09;&#xff0c;而另一端则称为栈底&#xff08;Bottom&#xff09;。 栈的概念及特点 栈…

springboot社区维修平台

设计技术&#xff1a; springboot、mysql、maven、前端vue 主要功能&#xff1a; 住户管理、社区公告管理、维修工管理、维修订单管理、接单信息管理、订单信息管理、在线沟通管理、举报信息管理、留言板管理、系统管理等功能模块。 管理员功能模块 管理员通过后台登录页面…

基于单片机和 Arduino 平台的六自由度可控机械手臂

摘 要 : 为了降低机械手臂的设计开发难度 &#xff0c; 并使之尽早地投入应用 &#xff0c; 设计一种基于单片机和 Arduino 平台的六自由度可控机械手臂 。提出六自由度可控机械手臂的控制方案&#xff0c; 给出机械手臂控制系统的结构框图 。 详细设计六自由度可控机械手臂…

Websocket在Java中的实践——自动注册端点

在《Websocket在Java中的实践——握手拦截器》中我们使用握手拦截器实现了路径解析的工作。这个过程略显复杂&#xff0c;因为路径解析这样比较底层的工作应该由框架来解决&#xff0c;而不应该交由开发者来做。本文介绍的自动注册端点的功能就可以很优雅的解决这个问题。 依赖…

[C++][设计模式][原型模式]详细讲解

1.动机 在软件系统中&#xff0c;经常面临这“某些结构复杂的对象”的创建工作&#xff1b;由于需求的变化&#xff0c;这些对象经常面临着剧烈的变化&#xff0c;但是它们却拥有比较稳定一致的接口如何应对这种变化&#xff1f;如何向“客户程序(使用这些对象的程序)”隔离出…

STM32HAL库--IIC实验(速记版)

STM32 的普通 IO 口模拟 IIC 时序&#xff0c;可实现与 EEPROM 外设双向通信。 IIC 简介 IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线&#xff0c;用于连接微控制器以及其外围设备。 IIC 是由数据线 SDA 和时钟线 SCL 构成的串行总线。 IIC …

在数据库领域是如何实现“多租户”的呢?

数据库多租技术介绍 随着云计算时代的到来&#xff0c;多租户的概念也逐渐广为人知。“多租户”使得租户之间可以共享物理资源&#xff0c;能够帮助用户节约硬件成本和运维成本&#xff0c;提高资源利用效率。同时&#xff0c;在实现的过程中&#xff0c;考虑到共享带来的安全…

three.js - matcap材质(MeshMatcapMaterial)

说一下matcap纹理 先总结&#xff1a;MeshMatcapMaterial材质&#xff0c;通过采样含有光照信息的贴图来模拟光照效果。这种材质特别适用于模拟静态光源下的光照&#xff0c;并且&#xff0c;因其简单性和快速性而被广泛应用于各种场景。但是&#xff0c;由于其性能考虑&#x…

系统思考—啤酒游戏经营决策沙盘

在日常的教学中&#xff0c;我们通过系统思考仿真演练深入探索决策背后的动因。例如&#xff0c;我经常教授的麻省理工学院研发的“啤酒游戏”和“人民航空策略模拟”&#xff0c;这些都是麻省理工MBA学生的必修课。此外&#xff0c;还有更简洁的“红黑游戏”“收获季节”等模拟…

ElasticSearch索引架构与存储

关于ES官网的介绍: Elasticsearch provides near real-time search and analytics for all types of data. Whether you have structured or unstructured text, numerical data, or geospatial data, Elasticsearch can efficiently store and index it in a way that support…

在低版本Excel中创建次级下拉列表

在低版本中indirect函数不支持选区&#xff0c;创建次级下拉列表得依靠“名称管理”给选区命名。 (笔记模板由python脚本于2024年06月26日 06:24:22创建&#xff0c;本篇笔记适合常用Excel处理数据的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www…

mid360配置lio-sam、point-lio和faster-lio(faster-lio未敢配置)

一、使用mid360配置lio-sam 1.首先从GitHub - nkymzsy/LIO-SAM-MID360 at Livox-ros-driver2 下载能支持mid360的lio-sam版本到 ws_livox/src中&#xff0c;直接编译&#xff0c;就可以成功。 2.使用 roslaunch lio_sam run6axis.launch以及播之前我才记得Mid360的包&#x…

Redis 缓存一致性

Redis 业务结构 流程图 缓存一致性 Redis 和 MySQL 中数据保持一致 双检加锁策略 主要用于解决多线程环境下的并发问题&#xff0c;确保在高并发场景下对共享资源的访问是互斥的&#xff0c;避免因竞争条件导致的不一致状态 public User findUserById(Integer id) {User user …

idea中maven新增的配置文件xx.xml没生效问题

项目场景&#xff1a; 因为公司使用自己的私服下载jar,则没有使用默认的settings.xml文件。而是新增了一个settingsold.xml文件 问题描述 公司项目有用自己的私服,Maven正常去私服下载jar包是没问题的。但是一直是去找的阿里云镜像,到导致阿里云镜像找不到相关的jar包报错!!!…

前端:Nuxt2 + Vuetify2

想要开发一个网站&#xff0c;并且支持SEO搜索&#xff0c;当然离不开我们的 Nuxt &#xff0c;那通过本篇文章让我们一起了解一下。如果构建一个Nuxt项目 安装 Nuxt&#xff0c;创建项目 安装nuxt2&#xff0c; 需要node v16&#xff0c;大家记得查看自己的node版本。构建脚…

Linux-笔记 OverlayFS文件系统小应用 恢复功能

前言 通过另一章节 OverlayFS文件系统入门 中已经大致了解了原理&#xff0c;这里来实现一个小应用。通过前面介绍我们已经知道lowerdir是只读层&#xff0c;upperdir是可读写层&#xff0c;merged是合并层&#xff08;挂载点&#xff09;&#xff0c;那么我们可以利用这个机…

.NET C# 使用GDAL将mdb转换gdb数据

.NET C# 使用GDAL将mdb转换gdb数据 目录 .NET C# 使用GDAL将mdb转换gdb数据1 环境2 Nuget3 Code 1 环境 VisualStudio2022 .NET6 GDAL 3.8.5 2 Nuget 3 Code FeatureExtension.cs public static class FeatureExtension {[DllImport("gdal.dll", EntryPoint &…