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.hqwc.cn/news/615928.html

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

相关文章

spring boot学习第十七篇:OAuth2概述及使用GitHub登录第三方网站

0. 导言 我们在浏览器上可以访问成百上千个网站&#xff0c;使用每个网站的服务一般都要先注册账号&#xff0c;那么我们为了更好地记忆&#xff0c;一般都会在多个网站使用相同的账号和密码进行注册。那么问题就来了&#xff0c;如果在你注册的网站中有某些个网站的系统设计不…

【vue3-pbstar-books】大学生前端期末作业(vue3、element-plus、ts、pinia、vite、json-server)

一、项目要求 二、项目介绍 vue3-pbstar-books是一个图书主题的pc端网站&#xff0c;该项目有首页、全部书籍页、书籍分类页、书籍详情页和关于页五个页面。该方案结合了 Vue3、Element-Plus、TypeScript、Pinia 和 Vite 等先进技术&#xff0c;实现高效的页面布局、状态管理和…

【心路历程】初次参加蓝桥杯实况

送给大家一句话&#xff1a; 寂静的光辉平铺的一刻&#xff0c;地上的每一个坎坷都被映照得灿烂。 – 史铁生 《我与地坛》 初次参加蓝桥杯有感 一点小小的震撼难评的做题过程A题 艺术与篮球问题描述解题 B 题 五子棋问题描述解题 C题 训练士兵问题描述解题 D题 团建解题 E题 …

【C语言】字符串函数和内存函数及其模拟实现

文章目录 前言 一、常见字符串库函数1.strlen函数2.长度不受限制的字符串函数2.1 strcpy2.2 strcat2.3 strcmp 3.长度受限制的字符串函数3.1 strncpy3.2 strncat3.3 strncmp 二、字符串查找函数strstrstrtok 三、strerror函数四、内存操作函数1.memcpy2.memmove3.memcmp 五、字…

openstack-镜像服务 3

Glance镜像服务 创建glacnce数据库 创建glance用户并创建服务实体及api端点 安装glance软件包 修改配置文件 同步到数据库 设置开机自启并查看日志目录 使用测试镜像验证服务

Project Euler_Problem 178_Step Numbers_动态规划

原题目&#xff1a; 解题思路&#xff1a;动态规划 代码&#xff1a; ll R[50][11][2048];void solve() {ll i, j,k,x,y,z,p,q,u,v;N 40, NN 1024;//N 20;double a, b, c,d;for (i 0; i < 9; i) {R[1][i][1 << i] 1;}for (i 2; i < N; i) {for (j 0; j &…

css animation 动画详细学习

学习 CSS 动画是一个深入且富有创造性的过程&#xff0c;它允许开发者创建出引人入胜且交互性强的网页效果。以下是对 CSS 动画学习的一些总结和要点&#xff1a; 1. 关键帧动画&#xff08;keyframes&#xff09; 使用 keyframes 规则定义动画的整个过程。在 keyframes 中&a…

一些错误的记录

Linux使用rz命令出现乱码&#xff1f; 使用下面的命令上传&#xff1a; rz -besz filename //从linux操作系统上下载文件&#xff08;夹&#xff09;到本地云服务器上的redis连接不上&#xff0c;本地的图形化界面 1.在云服务器控制台-防火墙开放6379端口(使用命令开放端口不…

Traefik和Nginx全方位对比

在现代网络架构中&#x1f310;&#xff0c;选择合适的反向代理&#x1f504;和负载均衡器⚖️是至关重要的。Traefik &#x1f6a6; 和 Nginx &#x1f30a; 是两款广泛使用的开源软件&#x1f513;&#xff0c;它们都能有效地处理大量网络请求&#x1f4c8;&#xff0c;但在功…

力扣刷题 二叉树层序遍历相关题目II

NO.116 填充每个节点的下一个右侧节点指针 给定一个 完美二叉树 &#xff0c;其所有叶子节点都在同一层&#xff0c;每个父节点都有两个子节点。二叉树定义如下&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;…

mysql8.0高可用集群架构实战

MySQL :: MySQL Shell 8.0 :: 7 MySQL InnoDB Cluster 基本概述 InnoDB Cluster是MySQL官方实现高可用读写分离的架构方案,其中包含以下组件 MySQL Group Replication,简称MGR,是MySQL的主从同步高可用方案,包括数据同步及角色选举Mysql Shell 是InnoDB Cluster的管理工具,用…

C++---vector容器

是STL容器中的一种常用的容器&#xff0c;由于其大小(size)可变&#xff0c;常用于数组大小不可知的情况下来替代数组。vector容器与数组十分相似&#xff0c;被称为动态数组。时间复杂度为O&#xff08;1&#xff09;。 数组数据通常存储在栈中&#xff0c;vector数据通常存储…