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

 目录

 

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.mzph.cn/news/813924.shtml

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

相关文章

深入探索Linux中的libgdbus:GDBus库的应用和实现

引言 在Linux系统中&#xff0c;DBus是一种高效的进程间通信&#xff08;IPC&#xff09;机制&#xff0c;广泛应用于桌面环境和系统服务之间的通信。GDBus是基于GLib库的DBus实现&#xff0c;作为libgdbus的一部分提供。它旨在提供一种简洁、高效的方式来实现DBus通信。通过深…

cocos2dx4.0 vs编译报错

1.版本 vs2017cocos 4.0 2.问题 不知道为什么编译运行cocos项目的时候报错了 错误信息如下&#xff1a; 15> 已完成执行任务“GetOutOfDateItems”的操作。 15> 由于 false 条件&#xff0c;已跳过任务“ParallelCustomBuild”&#xff1b;(‘(_ParallelCustomBuild)’…

vue3-element-admin二次开发遇到的问题总结,持续更新中

vue3-element-admin 是基于 Vue3 Vite5 TypeScript5 Element-Plus Pinia 等主流技术栈构建的免费开源的后台管理前端模板&#xff08;配套后端源码&#xff09;。 一、定制Element-Plus主题 1.创建 variables.scss 变量文件 /*variables.scss*/ /*覆盖element-plus变量*/…

前端面试复习大纲

在准备前端面试时&#xff0c;以下是一些可能会被问到的题目类型和概念&#xff0c;可以根据这些内容进行复习和准备&#xff1a; HTML/CSS基础 HTML5的新特性CSS盒模型响应式设计Flex布局和Grid布局浮动和定位CSS预处理器&#xff08;如Sass、Less&#xff09; JavaScript基础…

Golang | Leetcode Golang题解之第19题删除链表的倒数第N个结点

题目&#xff1a; 题解&#xff1a; func removeNthFromEnd(head *ListNode, n int) *ListNode {dummy : &ListNode{0, head}first, second : head, dummyfor i : 0; i < n; i {first first.Next}for ; first ! nil; first first.Next {second second.Next}second.N…

代码随想录算法训练营第三十六天|435. 无重叠区间、763.划分字母区间、56.合并区间

贪心 文章目录 一、无重叠区间二、划分字母区间三、合并区间总结 一、无重叠区间 求移除重叠区间&#xff0c;等于所有区间减去重叠区间&#xff0c;也就是重叠空间个数 class Solution { public:static bool cmp (vector<int>& a, vector<int>& b) {ret…

Nacos-默认token.secret.key-配置不当权限绕过漏洞复现

漏洞描述&#xff1a; Nacos 身份认证绕过漏洞(QVD-2023-6271)&#xff0c;开源服务管理平台 Nacos在默认配置下未对 token.secret.key 进行修改&#xff0c;导致远程攻击者可以绕过密钥认证进入后台&#xff0c;造成系统受控等后果。 漏洞信息 公开时间&#xff1a;2023-03…

MYSQL原理学习篇简记(五)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是小周同志&#xff0c;25届双非校招生Java选手&#xff0c;很高兴认识大家 &#x1f4d5;学习出处&#xff1a;本文是学自小林coding (xiaolincoding.com) 网站的MYSQL图解篇 &#x1f525;如果感觉博主的文章还不错的…

11 Php学习:函数

PHP 内建函数Array 函数 PHP Array 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。 创建 PHP 函数 当您需要在 PHP 中封装一段可重复使用的代码块时&#xff0c;可以使用函数。下面详细解释如何创建 PHP 函数并举例说明。 创建 PHP 函数的语法 PHP 函数的基…

【数据结构】图简介

目录 1. 简介2. 存储2.1 矩阵存储2.2 邻接表3 图的遍历3.1 深度优先搜索的方法3.2 广度优先搜索的方法1. 简介 图(graph)是用于表示物体和物体之间存在某种关系的结构。数学抽象后的“物体”称为节点或顶点(Vertex,node或 point)。节点之间的相关关系称作边(edge),根据…

生成式AI对UiPath来说是机遇还是挑战?

企业争相通过技术革新来领跑市场&#xff0c;机器人流程自动化&#xff08;RPA&#xff09;技术更是将企业的效率和成本控制推向了新的高度。但当人工智能&#xff08;AI&#xff09;的最新进展——生成式AI登上舞台时&#xff0c;它不仅带来了变革的可能&#xff0c;还提出了一…

Vue3---基础2(component)

主要讲解 component 的创建 以及vue插件的安装 Vue.js Devtools 为谷歌浏览器的Vue插件&#xff0c;可以在调试工具内查看组件的数据等 下载 有两种下载方式 1. 谷歌应用商店 打开Chrome应用商店去下载&#xff0c;这个方法需要魔法 2. 极简插件 极简插件官网_Chrome插件下载_…

[C++][算法基础]n-皇后问题(DFS)

n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n&#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n。 输出…

android 源码环境配置

如何配置自己的源码调试环境 1 编译源码 repo sync -j8 --fail-fast .build/envsetup.sh lunch 选73 make -j8 emulator 2 配置android studio sudo apt install openjdk-9-jre-headless //安装java https://developer.android.google.cn/studio//下载studio 解压后打开bin里…

APP开发教学:开发同城O2O外卖跑腿系统源码详解

同城O2O外卖跑腿系统&#xff0c;满足了人们对于外卖送餐和生活服务的需求。今天&#xff0c;小编将为您讲解如何开发同城O2O外卖跑腿系统源码。 1.前期准备 首先&#xff0c;我们需要明确系统的功能需求和用户需求&#xff0c;包括外卖订购、配送员接单、支付功能等。其次&am…

matlab多核程序如何共享内存和数据

在MATLAB中&#xff0c;多核程序共享内存和数据主要依赖于MATLAB的并行计算工具箱&#xff08;Parallel Computing Toolbox&#xff09;。这个工具箱提供了多种机制来在多个工作进程&#xff08;workers&#xff09;之间共享数据&#xff0c;这些工作进程可能运行在同一台机器的…

MySQL、Maria数据库用户管理(创建、修改、删除用户)常用操作

一. 前言 MySQL 在安装时&#xff0c;会默认创建一个名为 root 的用户&#xff0c;该用户拥有超级权限&#xff0c;可以控制整个 MySQL 服务器。 在对 MySQL 的日常管理和操作中&#xff0c;为了避免有人恶意使用 root 用户控制数据库&#xff0c;我们通常创建一些具有适当权…

(78)删除有序数组中的重复项(79)排序矩阵查找

文章目录 1. 每日一言2. 题目(78)删除有序数组中的重复项2.1 解题思路2.2 代码 3. 题目(79)排序矩阵查找3.1 解题思路3.1.1 暴力查找暴力查找代码 3.1.2 二分查找二分查找代码 3.1.3 贪心贪心代码 4. 结语 1. 每日一言 水晶帘动微风起&#xff0c;满架蔷薇一院香。 —高骈- 2.…

minio-docker单节点部署SDK测试文件上传下载

目录 一&#xff0c;docker部署minio单节点单磁盘 二&#xff0c;SDK测试上传下载 一&#xff0c;docker部署minio单节点单磁盘 1.拉取镜像 # 下载镜像 docker pull minio/minio 2.查看镜像 docker images 3.启动minio(新版本) 创建本机上的挂载目录&#xff0c;这个可以…

Java中Runnable和Callable有什么不同?(企业真题)

Java中Runnable和Callable有什么不同&#xff1f; 与之前的方式的对比&#xff1a;与Runnable方式的对比的好处 call()可以有返回值&#xff0c;更灵活 call()可以使用throws的方式处理异常&#xff0c;更灵活 Callable使用了泛型参数&#xff0c;可以指明具体的call()的返回值…