SpringBoot——内置数据库

news2024/9/24 1:24:41

简单介绍

关于数据层的三大组件,数据源,持久化技术,数据库。前两种都已经介绍过了SpringBoot的内置的解决方案,还有最后一个数据库,在SpringBoot中,内置了三款数据库。分别是:

  • H2
  • HSQL
  • Derby

这三种数据库有几个共同点:

  • 都是由Java语言编写,可以作为Java类被注入到Spring容器中
  • 轻量级,足够轻巧,可以在内存中运行

第一个特点可以让他们被内置在Spring中,第二个特点可以让他们在程序运行的时候避免安装直接被使用。这都是SpringBoot能内置这三款数据库的主要原因,并且足够轻巧的特点也可以方便我们在测试阶段做测试使用。

环境介绍

我们可以继续使用之前的环境,但是我们需要对pom文件中的坐标做一些修改。将之前的MySQL的坐标注释,然后添加H2数据库的相关依赖,以及Web的相关依赖:

        <!--H2数据库必须的两个坐标-->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

然后,我们将之前配置文件中的东西全部注释,然后对H2数据库和Web环境做一些配置:

server.port=80

spring.h2.console.enabled=true
spring.h2.console.path=/h2

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=123456
spring.datasource.url=jdbc:h2:~/test

最上面的是关于Web的相关配置,中间的是H2的相关配置,第一行表示开启H2的控制台,第二行表示H2Web端的控制台路径,第三部分是关于H2数据库的数据源相关配置,这部分的配置仅在第一次连接H2的时候有用,当第一次连接成功之后就可以删除这段配置。

然后启动SpringBoot的引导类: 

可以看到,控制台输出了很多我们之前没有见过的东西 ,红色框中的部分就是H2相关的日志,然后我们打开浏览器,输入H2Web控制台的网址:

 如果你在你的浏览器上看到这个,就说明你的H2数据库已经启动了,然后输入默认的密码123456,点击【Connect】:

这个界面就是操作H2数据库的Web端控制台,我们可以在右侧的输入框中输入SQL语句,然后在下面的状态栏中看到结果: 

由于H2是运行在内存中的,所以他的操作非常的快,但是存储的数据量也不是很多,一般常用与我们在测试中。并且H2作为一个SQL数据库,基本上MySQL中的语法也都支持,一些基本的增删改查的操作都是一样的。下面我们就用H2搭配Druid和MyBatis做一个完成的Dao层。

首先是我们要用到的所有的依赖:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter-test</artifactId>
            <version>2.3.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.8</version>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    </dependencies>

 配置文件:

spring:
  h2:
    console:
      enabled: true
      path: /h2
  datasource:
    url: "jdbc:h2:~/test"
    username: "sa"
    password: "123456"
    driver-class-name: "org.h2.Driver"

H2数据库SQL语句:

create table tb_user (id int,name varchar)
insert into tn_user values(1,'张三'),(2,'李四'),(3,'王五'),(4,'赵六')
select * from tb_user

然后就是去编写POJO和Mapper,这些我们之前都已经看过了,所以我这里直接展示测试类中的测试方法:

@Test
    void contextLoads(@Autowired userMapper userMapper) {
        book user = userMapper.selectUserById(1);
        System.out.println(user);
    }

 方法还是之前的方法,参数都是一样的,SpringBoot主打的就是一个只要是你能集成的东西,那么基本代码不用变,无非就是导入一下坐标,然后更改一下配置文件而已。

在控制台上也打印出了我们这里与H2相关的日志,这就基本完成了H2的集成。 

总结

到目前为止,我们关于数据层有关的三大组成部分,数据源,持久化技术,数据库,在SpringBoot中的默认解决方案就已经介绍完了。这里就只是说了一下在SpringBoot中有,并且自动维护了这么一种技术,具体的数据选型还是要根据当时的情况来决定,并且这集中技术的好坏优势等等都是要自己的深入学习之后,再根据情景去判断。

除了介绍这几种技术,最主要的是这几种技术可以互相的组合使用。比如我们一直在使用的MyBatis和Druid,MySQL的组合,在测试的时候,我们可以将MySQL换成速度更快的H2,或者将Druid换成配置更少的hikari,注意在使用的时候要导入对应的依赖既可。

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

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

相关文章

ARTIF:一种先进的实时威胁智能识别框架

关于ARTIF ARTIF是一个新型的高级实时威胁智能框架&#xff0c;它基于MISP并添加了另一个抽象层&#xff0c;以实现根据IP地址和历史数据识别恶意Web流量。除此之外&#xff0c;该工具还可以通过收集、处理和关联基于不同因素的观测值来执行自动分析和威胁评分。 功能介绍 评…

uni-app在小米手机上运行【步骤细节】

注意细节重点&#xff1a; 1.手机使用数据线与电脑连接&#xff0c;手机连接模式必须是传输文件模式 2.手机必须打开开发者模式 3.打开开发者模式后&#xff0c;仔细浏览并调整USB调试权限&#xff0c;重点打开USB是否允许安装按钮&#xff01;&#xff01;&#xff01; 操作步…

onnxruntime (C++/CUDA) 编译安装

一、克隆及编译 git clone --recursive https://github.com/Microsoft/onnxruntime cd onnxruntime/ git checkout v1.8.0如果克隆的时候报错&#xff1a; 执行以下&#xff1a; apt-get install gnutls-bin git config --global http.sslVerify false git config --global h…

自动化测试的技术路线

本文中我谈一下自动化测试的技术路线&#xff0c;同时也是测试团队的发展路线。 团队路线1.工程化路线 如果你们公司只有你一个测试&#xff0c;那工程化的路线是必然的选择。另外&#xff0c;我个人比较推崇工程化而非平台化。 下图介绍了工程化路线下写出来的自动化测试&…

[oeasy]python0075_删除变量_del_delete_variable

删除变量 回忆上次内容 上次我们研究了字节序 字节序有两种 符号英文名称中文名称<little-endian小字节序>big-endian大字节序 字节序 用来 明确 整型数字存储的 顺序 如果 读写数字出了错 可以 考虑一下 是否 字节序出了问题 变量现在可以 声明初始化存储了 但是 …

Animator Animator Controller Avatar relationship

Animator 组件用于将动画分配给场景中的游戏对象。Animator 需要对Animator Controller 的引用&#xff0c;该控制器定义要使用的动画剪辑&#xff0c;并控制何时以及如何在它们之间混合和过渡。 如果 GameObject 是具有 Avatar 定义的人形角色&#xff0c;则 Avatar 也应在此组…

【数据结构】--189.轮转数组

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

Python GUI 案例 (tkinter module)

Python GUI 设计案例 基于matplotlib的 y-x 简单绘图 import tkinter as tk from tkinter import filedialog import matplotlib.pyplot as plt import numpy as npdef select_x_file():x_file_path filedialog.askopenfilename(title"x")x_file_entry.delete(0, t…

Pytorch学习笔记 | 数据类型 | mnist数据集

数据类型 python中数据类型和pytorch中的对应关系 注意:pytorch是没有没有string类型的 例1:创建一个3行4列的随机数数组,符合均值为0,方差为1的正态分布 import torch a=torch.Tensor(3,4) a Out[17]: tensor([[0.

iperf3跑满100G网卡实测记录

环境准备 拓扑 两台服务器 100G网卡对插直连。 ubuntu20.04, 系统设置默认状态 MTU 1500 网卡 Mellonax ConnectX5 100G rootvnet:~# lspci | grep Mellanox 98:00.0 Ethernet controller: Mellanox Technologies MT27800 Family [ConnectX-5] 98:00.1 Ethernet control…

【高级数据结构】树状数组

目录 树状数组1 &#xff08;单点修改&#xff0c;区间查询&#xff09; 树状数组1 &#xff08;单点修改&#xff0c;区间查询&#xff09; 洛谷&#xff1a;树状数组1https://www.luogu.com.cn/problem/P3374 题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行…

汇报的目标和技巧【研发版】

汇报的组织意义 要做好汇报&#xff0c;需要先理解汇报的意义&#xff0c;这是根源上的指导。直接地说&#xff0c;满足上级的需求就是汇报的价值&#xff0c;而上级需求来自企业运作的需要&#xff0c;这也是各级管理者职责的组成部分。 各级管理者的职责&#xff08;倒序引用…

API声明文件Swagger Injection攻击

Swagger 在API化的世界里&#xff0c;相信无论是前端还是后端开发&#xff0c;都或多或少地被接口维护折磨过。随着API迭代&#xff0c;老旧API文档和SDK需要更新&#xff0c;这是一个耗散研发精力的事情。为解决此类问题&#xff0c;以API为软件能力最终交付物的生态不断演进…

实训笔记7.27

实训笔记7.27 7.27笔记一、Hive数据仓库基本概念&#xff08;处理结构化数据&#xff09;1.1 Hive的组成架构1.1.1 Hive的客户端1.1.2 Hive的驱动程序1.1.3 Hive的元数据库 1.2 Hive和数据库的区别 二、Hive的安装配置三、Hive的相关配置项四、Hive的基本使用方式4.1 使用Hive的…

FS32K144官方提供串口Bootloader对接Matlab串口烧写程序

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ 前言 Bootloader升级工具&#xff1a;可用TTL、232、485&#xff08;硬件收发模式&#xff09;,其中的一种&#x…

DP学习第四篇之不同路径II

DP学习第四篇之不同路径|| 63. 不同路径 II - 力扣&#xff08;LeetCode&#xff09; 一.题目解析 二. 算法原理 状态表示 tips: 经验题目要求。以[i,j]位置为结尾&#xff0c;。。。 dp[i][j]: 走到[i, j]位置时&#xff0c;一共多少种路径 状态转移方程 tips: 用之前或…

【业务功能篇55】Springboot+easyPOI 导入导出

Apache POI是Apache软件基金会的开源项目&#xff0c;POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 Apache POI 代码实现复杂&#xff0c;学习成本较高。 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出…

Golang单元测试详解:单元测试的基本使用方法

Golang 单元测试 Golang 中的单元测试是使用标准库 testing 来实现的&#xff0c;编写一个单元测试是很容易的&#xff1a; 创建测试文件&#xff1a;在 Go 项目的源代码目录下创建一个新的文件(和被测代码文件在同一个包)&#xff0c;以 _test.go 为后缀名。例如&#xff0c…

性能优化 - 前端性能监控和性能指标计算方式

性能优化 - 前端性能监控和性能指标计算方式 前言一. 性能指标介绍1.1 单一指标介绍1.2 指标计算① Redirect(重定向耗时)② AppCache(应用程序缓存的DNS解析)③ DNS(DNS解析耗时)④ TCP(TCP连接耗时)⑤ TTFB(请求响应耗时)⑥ Trans(内容传输耗时)⑦ DOM(DOM解析耗时) 1.3 FP(f…

项目接入星火认知大模型!!!

项目接入星火认知大模型demo 导言 随着国内的语言大模型不断兴起&#xff0c;科大讯飞的星火大模型&#xff0c;阿里的通义千问&#xff0c;百度的文心一言等。 这些大模型给我提供了很好的便利 同时星火大模型提供了 开放api功能 使得我们能够将大模型接入到我们自己的项目当…