Java使用H2数据库全方式汇总

news2024/11/25 14:26:20

H2是轻量级数据库, 可以不需要安装就可以运行,对于快速学习和演示比较适用。关于H2的基本内容可以参考: H2 数据库简介 。 本篇快速介绍H2数据库在各种类型的Java应用中的使用, 包括:

  1. Java 项目
  2. Java Web 项目
  3. Spring Boot项目

本篇基本环境

  • Java 1.8
  • Maven 3.8
  • Eclipse 2022-09 (4.25.0)
  • H2 2.1.214

1. Java项目使用H2

在Java项目中只需要导入H2 的依赖包就可以使用H2数据库了。以Maven为例,在pom.xml 添加如下依赖:

		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<version>2.1.214</version>
		</dependency>

添加之后, 就可以使用Java的sql 相关的类进行访问了。看起来上面的导入类似于MySQL和Oracle 的JDBC的驱动, 但其实这个库文件除了驱动类之外还包含了更多的内容,其相当于安装数据库。

数据库链接的代码如下:

		Connection conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", "sa");
		conn.close();
  • jdbc:h2:~/test , 这个是数据库的地址,~/test意思是在用户主目录下的test 的数据库。在电脑的用户主目录下会产生如下文件:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hYWbf476-1670749686705)(images/screenshot_1670741925131.png)]
    产生的数据表和数据会保存在这些文件中。
  • 在2.1.214版本中, sa账号的密码是sa,在1.x 版本中, sa的密码为空。

使用java sql 创建数据库、插入数据以及查询数据的代码如下:

		Connection conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", "sa");
		Statement stmt = conn.createStatement();
		stmt.execute("DROP TABLE MY_USER"); //删除已经存在的表
		stmt.execute("CREATE TABLE MY_USER(ID VARCHAR(10) PRIMARY KEY,NAME VARCHAR(50))"); //创建表
		stmt.executeUpdate("INSERT INTO MY_USER VALUES('001','刘备')"); //插入数据
		stmt.executeUpdate("INSERT INTO MY_USER VALUES('002','关羽')");
		stmt.executeUpdate("INSERT INTO MY_USER VALUES('003','张飞')");
		
		ResultSet rs = stmt.executeQuery("SELECT NAME FROM MY_USER WHERE ID='001'"); //查询
        while(rs.next()){ 
            String name = rs.getString("NAME");
            Assertions.assertTrue(name.equals("刘备"));
        }
        rs.close();
        stmt.close();
		conn.close();
  • USER 表名是系统表,如果创建该名字的表会报错误 :org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "CREATE TABLE [*]USER(ID VARCHAR(10) PRIMARY KEY,NAME VARCHAR(50))"; expected "identifier"; SQL statement: 。 所以这里使用MY_USER,也可以使用USR。
  • 配置 jdbc:h2:~/test地址, 被创建的表会保存在用户主目录中,如果再次创建会报已经存在。

H2管理控制台

MySQL 可以使用MySQL workbench 工具连接数据库进行可视化操作, Oracle 可以使用SQL Develop客户端工具,那么H2 怎么可视化的连接数据库呢? 命令行切换到h2 的jar 文件目录,通过java命令直接运行这个文件,运行后会自动打开一个网址, 如下图:
在这里插入图片描述

登录之后就可以在浏览器中进行数据库相关的操作了
在这里插入图片描述

**注意: ** 通过java 运行jar文件是启动数据库并且提供管理控制台, 上面代码的方式连接数据库也是会先启动数据库。两者都会启动数据库,所以只能同一时刻只能运行一个,运行的一个会把数据库文件锁定, 另一个使用会报已经在使用的错误。

2. Java Web项目使用H2

Java Web 项目使用H2可以在 web.xml 做如下配置:

	<listener>
		<listener-class>org.h2.server.web.DbStarter</listener-class>
	</listener>
	<servlet>
		<servlet-name>H2Console</servlet-name>
		<servlet-class>org.h2.server.web.WebServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>H2Console</servlet-name>
		<url-pattern>/console/*</url-pattern>
	</servlet-mapping>
  1. 配置一个监听器, 在Web项目启动的时候启动H2数据库
  2. 配置H2控制台的Servlet,通过Sevlet 可以管理数据库。

3. Spring Boot 项目使用H2

Spring Boot很好的兼容了H2数据库, 只要在应用的配置文件添加H2相关的配置即可, 类似:

##H2 Database
#1.数据源的平台
spring.datasource.platform=h2  
#2.数据源驱动类
spring.datasource.driver-class-name=org.h2.Driver
#3.数据源地址。mem代表Memory,内存数据库。myh2是数据库的名字,可以任取。
spring.datasource.url=jdbc:h2:mem:myh2 

完整的介绍可以参考:
Spring Boot整合H2内存数据库配置及常见问题处理



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

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

相关文章

《域渗透攻防指南》签名版预售来啦

千呼万唤始出来&#xff01;终于&#xff0c;在广大粉丝翘首期盼下&#xff0c;国内首本专门讲述域内攻防的书籍《域渗透攻防指南》在2022年最后一个月和大家见面了。为了回馈粉丝的等待&#xff0c;让粉丝早日拿到心仪的书&#xff0c;特此联合机械工业出版社弄了签名版书预售…

GLAD:部分相干光模拟

概述 一个理想的单色点光源发射的光是完全相干光。但实际物理光源不是点源&#xff0c;总是具有一定的空间尺度并包含众多辐射单元&#xff0c;其发出的光也非严格的单色光,其光谱具有一定宽度&#xff0c;这种光即部分相干光。产生部分相干光主要有三种方法&#xff1a; …

Python中常用的内置函数集合

这篇文章主要介绍了Python中常用的内置函数&#xff0c;主要介绍内容有map()、filter()、all()、int()等更多相关函数&#xff0c;需要的小伙伴可以看看。 一、map() map(func,iterable)&#xff0c;其中func为函数名&#xff0c;可为lambda匿名函数&#xff0c;iterable为可迭…

全栈Jmeter接口测试(二):jmeter组件元件介绍,利用取样器中http发送请求

JMeter 的主要测试组件总结如下&#xff1a; 1. 测试计划是使用 JMeter 进行测试的起点&#xff0c;它是其它 JMeter 测试元件的容器 2. 线程组代表一定数量的并发用户&#xff0c;它可以用来模拟并发用户发送请求。实际的 请求内容在Sampler中定义&#xff0c;它被线程组包含…

Camtasia Studio2023电脑屏幕录制软件免费版

TechSmith Camtasia Studio2023免费的屏幕录像视频编辑软件&#xff0c;最专业的电脑屏幕录制及编辑软件&#xff01;这款专业录屏与视频创作大型软件包含屏幕录像、视频编辑、视频菜单制作、视频录音配音、视频发布等系列强大功能。 全新的Camtasia 2023 让您用更短的时间创…

【图像隐写】GBT+SVD数字水印嵌入与提取【含Matlab源码 1668期】

⛄一、SVD数字水印简介 理论知识参考文献&#xff1a;基于DWT和SVD的彩色图像数字水印算法研究 一种基于DWT-SVD的图像数字水印算法 ⛄二、部分源代码 clc close all clear %% Input images Iimread(‘Lena.jpg’); Iimresize(I,[512,512]); logorandsrc(8,8,[0,1]); figur…

青春不过,几次世界杯,足球让我明白,努力的方向

人生就像足球&#xff0c;你不会永远进球&#xff0c;但会一直跑在路上&#xff01;直到遇到足球&#xff0c;我的人生彻底改变&#xff0c;我很记得我第一个足球的样子&#xff0c;在我心里&#xff0c;它就像一颗糖果 ——梅西⚽️ 随着2022卡塔尔世界杯的开赛&#xff0c;各…

GitHub上架即巅峰,《Spring Cloud微服务架构实战》标星已超30k

有人调侃我们说&#xff1a; 程序员不如送外卖。送外卖是搬运食物&#xff0c;自己是搬运代码&#xff0c;都不产出新的东西……透支体力&#xff0c;又消耗健康&#xff0c;可替代性极强&#xff0c;30岁之后就要面临被优化的危险……想跳槽&#xff0c;但是更高的平台难进&a…

R 两组样本t检验 wilcoxon检验、卡方、fisher精确检验

一般统计方法R实现 文章目录一、读入数据二、连续性变量1.正态性和方差齐性检验2.描述统计量3.独立样本t检验和wilcoxon秩和检验三、四格表卡方或fisher精确检验&#xff08;OR【95%CI】&#xff09;1.计算各组频数和相对频率2.整理数据进行检验总结一、读入数据 library(read…

#Linux杂记# grep 查找命令常用选项大全(一)

今天&#xff0c;难得好天气&#xff0c;过去阴雨绵绵几天&#xff0c;确实干什么都没多少心劲。 对于Linux 指令&#xff0c;其实工作中用的也就那么多&#xff0c;但是真正用的很6的&#xff0c;确实给我们工作效率带来极大提高。 -i&#xff1a;在搜索的时候忽略大小写。 …

数据技术篇之离线数据开发

第4章 离线数据开发 采集系统采集的大量数据只有被整合计算后才能用于洞察商业规律&#xff0c;挖掘潜在的信息&#xff0c;实现其价值。面对海量的数据和复杂的计算&#xff0c;阿里巴巴的数据计算层包括两大体系&#xff1a; 数据存储及计算平台&#xff08;离线计算平台MaxC…

【OpenCV-Python】教程:4-8 ORB (Oriented FAST and Rotated BRIEF)

OpenCV Python ORB (Oriented FAST and Rotated BRIEF) 【目标】 理解 ORB 的基础理论 【理论】 ORB 来自于 OpenCV 实验室&#xff1b;在ICCV2011的论文 “ORB: An efficient alternative to SIFT or SURF” 提出&#xff0c;是 SIFT 和 SURF 的替代&#xff0c;没有专利问…

Java解析XML-JDK

JAXB 概述 JAXB&#xff08;Java Architecture for XML Binding&#xff09;是J2SE和J2EE平台的一部分&#xff0c;让开发者能够快速完成Java类和XML的互相映射。 JAXB 允许Java人员将Java类映射为XML表示方式。其实&#xff0c;JAXB是一个业界标准&#xff0c;是一项可以根据X…

企业景气指数、企业家信心指数-季度数据(2005-2022年)

&#xff08;2005-2022年&#xff09; 企业景气指数&#xff08;企业综合生产经营景气指数&#xff09;是根据企业负责人对本企业综合生产经营情况的判断与预期而编制的指数&#xff0c;用以综合反映企业的生产经营状况。 企业家信心指数综合反映企业家对宏观经济的看法和信心…

【Make YOLO Great Again】最终版本YOLOv1-v7全系列大解析(全网最详细汇总篇)

Rocky Ding公众号&#xff1a;WeThinkIn写在前面 【Make YOLO Great Again】栏目专注于从更实战&#xff0c;更深刻的角度解析YOLOv1-v7这个CV领域举足轻重的算法系列&#xff0c;并给出其在业务&#xff0c;竞赛以及研究维度的延伸思考。欢迎大家一起交流学习&#x1f4aa;&am…

node+vue基于微信小程序的乐团团购系统的设计与实现

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

Stm32旧版库函数4——nrf24l01 32位数据发送接受

stm32 32位 发射&#xff08;硬件SPI 引脚重映射&#xff09;&#xff1a; #include "stm32f10x_lib.h" #include "sys_config.h" #include "usart.h" #include "nrf.h" #include "delay.h" extern u8 TX_ADDRESS[TX_ADR_…

在Windows OS中安装与配置Scala的IDE环境

在Windows OS中安装与配置Scala的IDE环境一、Scala的安装过程二、Scala与IDE的集成一、Scala的安装过程 &#xff08;1&#xff09;下载与安装Scala软件 以下有个帖子&#xff0c;其详细记录了Window系统在安装Scala的步骤&#xff0c;可供读者参考&#xff0c; Window系统详…

jmeter的安装和简单使用

jmeter的安装和简单使用 Jmeter是一款优秀的开源测试工具&#xff0c;就算是开发也要了解一下。 下载 window下载zip包即可 下载地址&#xff1a; https://jmeter.apache.org/download_jmeter.cgi <img src“https://cdn.jsdelivr.net/gh/cloudinwinter/myimagemaster/…

COVID应对小tips

不信谣不传谣&#xff0c;只是自己的一点记录&#xff0c;有引用到各位大佬的内容&#xff0c;侵删&#xff0c;感谢感谢&#xff0c;对自己可以理中客&#xff0c;对别人还是尽可能主观上的友好&#xff0c;不要慷他人之慨。 准备 喉咙刺痛方面&#xff1a;柠檬&#xff08;…