SpringBoot 集成H2数据库,启动执行sql, 中文乱码

news2025/2/22 12:57:24

 目录

 

H2数据库介绍

 SpringBoot版本:SpringBoot 2.1.12.RELEASE

快速集成H2,maven依赖

快速集成H2,数据源及关键参数配置

spring.datasource.schema参数(建表SQL脚本)

spring.datasource.data参数(更新、插入SQL脚本)

项目集成H2启动执行SQL中文乱码问题处理(仅供参考)

控制台可视化访问H2数据库

H2数据库性能及功能说明

H2数据库介绍

H2是一个嵌入式的内存数据库,非常适合开发和测试环境。H2 Console最大的优势是其便捷性和直观性。不需额外软件,开发者可直接通过浏览器进行数据库操作,快速验证数据和设计。

H2数据库是一款以 Java编写的轻量级关系型数据库。由于其小巧、灵活并且易于集成,H2经常被用作开发和测试环境中的便利数据库解决方案。除此之外,H2也适合作为生产环境中的嵌入式数据库。它不仅支持标准的SQL,还兼容JDBC API,既可以以嵌入式的形式运行,也可以作为服务器模式运行。

H2数据库的突出优势在于其轻量级和高性能。作为一款Java编写的数据库,H2能够无缝集成到任何Java开发的应用中,免去了繁琐的安装和配置过程。同时,H2通过支持多种运行模式和提供丰富的SQL功能,实现了卓越的数据管理能力。 然而,相较于传统的企业级数据库,H2在数据持久化、高并发处理和数据安全性等方面仍显示出一定的局限性。例如,对于需求巨大、数据量庞大和并发请求繁多的大型企业应用,H2可能不是主数据库的理想选择。

H2内存数据库管理工具下载:H2数据库管理工具icon-default.png?t=N7T8https://www.h2database.com/html/download.html

 SpringBoot版本:SpringBoot 2.1.12.RELEASE

    <properties>     

          <spring-boot.version>2.1.12.RELEASE</spring-boot.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-to-slf4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    </dependencies>

快速集成H2,maven依赖

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

快速集成H2,数据源及关键参数配置

#web应用访问端口

server.port=8080

#相对路径,相对工程目录,.代表的就是当前工程目录,test是db文件名(可自定义)
spring.datasource.url=jdbc:h2:file:./test
#绝对路径,用户目录。在Window操作系统下,”~”这个符号代表的就是当前登录到操作系统的用户对应的用户目录,test是db文件名(可自定义)
#spring.datasource.url=jdbc:h2:file:~/test
spring.datasource.username=sa
spring.datasource.password=123456
spring.datasource.driver-class-name=org.h2.Driver

#开启h2控制台功能和访问地址。
spring.h2.console.enabled=true
# 管理端访问入口默认就是h2-console,可以改,如test-h2-console
spring.h2.console.path=/h2-console
spring.h2.console.settings.web-allow-others=true

#sql脚本编码格式
spring.datasource.sql-script-encoding=UTF-8


#建表sql语句脚本
spring.datasource.schema=classpath:acs-schema.sql
#插入数据的sql脚本,也可以写删除数据的sql里面(重置数据重新插入数据)
spring.datasource.data=classpath:acs-data.sql

spring.datasource.schema参数(建表SQL脚本)

CREATE TABLE IF NOT EXISTS `user` (
                            `id` varchar(32) NOT NULL,
                            `username` varchar(64) DEFAULT NULL,
                            `password` varchar(64) DEFAULT NULL,
                            `realname` varchar(512) DEFAULT NULL,
                            `create_date` datetime DEFAULT NULL,
                            `status` varchar(16) DEFAULT NULL,
                            `is_admin` varchar(8) NOT NULL DEFAULT '0',
                            PRIMARY KEY (`id`)
);

spring.datasource.data参数(更新、插入SQL脚本)

DELETE FROM `user`;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('402815817fd8a5c8017fd8a5c8ba0000', 'admin', '795eaf5e5555bbe8d8887f67fa91ccc2', '系统管理员',, '2022-03-30 10:26:58', '0', '1');
INSERT INTO `user` VALUES ('8a8080898ebcd224018ebcd224ff0000', 'test', '795eaf5e5555bbe8d8887f67fa91ccc2', '测试员',, '2024-04-08 16:27:52', '0', '0');

项目集成H2启动执行SQL中文乱码问题处理(仅供参考)

第一步:设置sql脚本编码格式为UTF-8

spring.datasource.sql-script-encoding=UTF-8

如果配置spring.datasource.sql-script-encoding=UTF-8后执行sql仍旧乱码,可以检查编译后的sql脚本文件编码格式是否正常(检查脚本里面中文内容是否乱码)。考虑第二步的配置,解决编译的配置文件乱码问题

第二步:设置maven插件,配置文件编译后的编码格式

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-resources-plugin</artifactId>
   <version>2.6</version>
   <configuration>
        <encoding>UTF-8</encoding>
   </configuration>
</plugin>

控制台可视化访问H2数据库

(1)访问端口是web应用访问端口:server.port参数,如8080

(2)访问路径是h2配置的访问路径:spring.h2.console.path参数,如h2-console

(3)完整访问路径:http://localhost:8080/h2-console

H2数据库性能及功能说明

(1)应用场景:

H2是一个轻量级的数据库,适合在小型应用或者开发环境中使用。H2数据库支持内存模式,数据不被持久化,适合特殊使用场景(例如:快速原型开发,测试,高性能操作,只读数据库)。

(2)功能:

H2是一个全功能的关系数据库管理系统,支持SQL,并且可以嵌入到Java应用程序中或者作为数据库服务器使用。它支持预定义的数据类型(如浮点数或日期),支持二级索引,并且支持Java存储过程和用户定义的函数。然而,它不支持XML处理,没有分区方法,也不提供用户定义的Map/Reduce方法。

(3)易用性:

H2得分为8.0/10。H2适合运行应用测试,并且可以轻松地替换实际生产环境中使用的数据库解决方案。然而,如果预计应用程序将被大量用户使用或者应用程序较为复杂,则更适合使用MySQL。

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

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

相关文章

【鹤城杯 2021】 CRYPTO刷题

easy_crypto 附件easy_crypto.txt&#xff0c;内容是社会核心主义观 公正公正公正诚信文明公正民主公正法治法治诚信民主自由敬业公正友善公正平等平等法治民主平等平等和谐敬业自由诚信平等和谐平等公正法治法治平等平等爱国和谐公正平等敬业公正敬业自由敬业平等自由法治和…

联想电脑VMware虚拟机VT开启虚拟化

以联想电脑为例。 关机重启&#xff0c; 有的电脑是按F2&#xff0c; 有的是按fnF2 进入BIOS&#xff0c;左右键&#xff0c;选择Configuration&#xff0c; 再上下键选择 Intel Virtual Technology 按回车键&#xff0c;再按上下键选择 Enable &#xff0c;回车确认。 按fn…

【VScode】同时编辑多处

【VScode】同时编辑多处 1. 多光标自定义批量编辑2. 选择多个&#xff0c;同时操作(批量选中局部匹配项)3. 取消选择4. 在不移动光标的情况下滚动屏幕5. 批量选中全局匹配项6.重点6.1 通过上下键选择多行6.2 同时选中所有行的末尾6.3 选中多列另一种方式6.4 通过正则的方式配置…

dockerhub右键快速搜索脚本

Chrome 浏览器扩展的后台脚本&#xff0c;用于创建右键菜单项&#xff0c;并根据用户的操作在新的标签页中打开 Docker Hub 网站或者进行搜索。 // 创建右键菜单项&#xff0c;用于打开 Docker Hub 网站 chrome.contextMenus.create({id: search-home, // 菜单项的唯一标识符t…

移除元素Java实现

题意 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 额外空间 并 原地 修改数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元…

Netty实现udp服务器

1、TCP与UDP通信协议 网络传输层协议有两种&#xff0c;一种是TCP&#xff0c;另外一种是UDP。 TCP是一种面向连接的协议&#xff0c;提供可靠的数据传输。TCP通过三次握手建立连接&#xff0c;并通过确认和重传机制&#xff0c;保证数据的完整性和可靠性。TCP适用于对数据准…

红豆Cat 1开源|项目二: 从0-1设计一款MQTT版本DTU(支持GNSS)产品的软硬件全过程

MQTT版DTU&#xff08;GNSS&#xff09;项目概述 DTU 通常指的是数据传输单元&#xff0c;它是一种用于将现场设备的数据通过无线或有线方式传输到远程控制中心的设备。DTU 可以实现设备与控制中心之间的数据通信&#xff0c;以便实时监测和控制设备的运行状态。 产品定义描述…

SpringBoot内容协商快速入门Demo

1.什么内容协商 简单说就是服务提供方根据客户端所支持的格式来返回对应的报文&#xff0c;在 Spring 中&#xff0c;REST API 基本上都是以 json 格式进行返回&#xff0c;而如果需要一个接口即支持 json&#xff0c;又支持其他格式&#xff0c;开发和维护多套代码显然是不合理…

面对DDOS攻击,有哪些解决办法

随着互联网带宽的持续增长以及DDOS黑客技术的发展&#xff0c;DDOS拒绝服务攻击的实施变得愈发容易。商业竞争、打击报复、网络敲诈等多种因素&#xff0c;各行各业的用户都曾受到DDOS攻击的威胁。 一旦遭受到DDOS攻击&#xff0c;随之而来的就是业务宕机&#xff0c;用户无法…

C++ GDAL提取多时相遥感影像中像素随时间变化的数值数组

本文介绍基于C语言GDAL库&#xff0c;批量读取大量栅格遥感影像文件&#xff0c;并生成各像元数值的时间序列数组的方法。 首先&#xff0c;我们来明确一下本文所需实现的需求。现在有一个文件夹&#xff0c;其中包含了很多不同格式的文件&#xff0c;如下图所示。 其中&#x…

机器学习-08-关联规则和协同过滤

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中关联规则和协同过滤。 参考 机器学习&#xff08;三&#xff09;&#xff1a;Apriori算法&#xff08;算法精讲&#xff09; Apriori 算法 理论 重点 MovieLens:一个常用的电影推荐系统领域的数据集 2…

2024阿里云2核4G服务器优惠价格表_2核4G性能测评

阿里云2核4G服务器多少钱一年&#xff1f;2核4G服务器1个月费用多少&#xff1f;2核4G服务器30元3个月、85元一年&#xff0c;轻量应用服务器2核4G4M带宽165元一年&#xff0c;企业用户2核4G5M带宽199元一年。本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1…

6种xinput1_3.dll丢失的解决办法,并探讨xinput1_3.dll丢失的原因及其属性。

xinput1_3.dll扮演着Visual C运行时库中不可或缺的角色&#xff0c;众多电脑软件都需依赖它以确保正常运行。 当您启动软件时&#xff0c;若遇到xinput1_3.dll无法执行代码的提示&#xff0c;可能会导致软件无法如常启动或运行。本文将向您介绍6种解决方案&#xff0c;并探讨xi…

潍微科技-水务信息管理平台 ChangePwd SQL注入漏洞复现

0x01 产品简介 水务信息管理平台主要帮助水务企业实现水质状态监测、管网运行监控、水厂安全保障、用水实时监控以及排放有效监管,确保居民安全稳定用水、环境有效保护,全面提升水务管理效率。由山东潍微科技股份有限公司研发,近年来,公司全力拓展提升水务、水利信息化业务…

二叉数应用——最优二叉树(Huffman树)、贪心算法—— Huffman编码

1、外部带权外部路径长度、Huffman树 从图中可以看出&#xff0c;深度越浅的叶子结点权重越大&#xff0c;深度越深的叶子结点权重越小的话&#xff0c;得出的带权外部路径长度越小。 Huffman树就是使得外部带权路径最小的二叉树 2、如何构造Huffman树 &#xff08;1&#xf…

Prime (2021): 2

前言 这个靶机有亿点难,收获很多。打靶的时候&#xff0c;前面很顺&#xff0c;到创建ssh公钥之后就一点不会了。 1 01 arp扫描&#xff0c;发现有一个130&#xff0c;再查看端口 有22&#xff0c;80&#xff0c;129&#xff0c;445&#xff0c;10123 dirb扫描目录 这…

【机器学习】决策树(Decision Tree,DT)算法介绍:原理与案例实现

前言 决策树算法是机器学习领域中的一种重要分类方法&#xff0c;它通过树状结构来进行决策分析。决策树凭借其直观易懂、易于解释的特点&#xff0c;在分类问题中得到了广泛的应用。本文将介绍决策树的基本原理&#xff0c;包括熵和信息熵的相关概念&#xff0c;以及几种经典的…

国内电缆附件市场规模保持增长态势 高压电缆附件占据较多市场份额

国内电缆附件市场规模保持增长态势 高压电缆附件占据较多市场份额 电缆附件是连接电缆与输配电线路及相关配电装置的产品&#xff0c;主要用于保护电缆、连接电缆或改变电缆方向&#xff0c;是电缆系统的重要组成部分。电缆附件种类多样&#xff0c;根据材料及制作工艺不同可分…

遥感影像为什么需要分块处理

原理 遥感影像通常具有极高的分辨率和大量的数据量&#xff0c;这就使得全景处理遥感影像成为一项极具挑战的任务。首要的问题是&#xff0c;大规模的遥感影像可能会超过硬件设备&#xff0c;特别是GPU的内存容量。其次&#xff0c;处理大规模遥感影像的计算复杂度非常高&…

linux常见使用命令

查看CPU内存 cat /proc/cpuinfo 动态查看 top 部分版本中没有&#xff0c;需要自行安装的命令 dstat 查看内核版本号 uname -r 系统版本的全部信息 uname -a 查看所有关于网络的相关信息 netstat -anp 查看8080端口是否被占用 netstat -anp | grep 8080 指定进程名字都有那些连…