SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.3 H2数据库

news2025/8/12 2:10:46

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 开发实用篇

文章目录

      • SpringBoot
      • SpringBoot 开发实用篇
      • 4 数据层解决方案
        • 4.3 H2数据库
          • 4.3.1 问题引入
          • 4.3.2 内置数据库
          • 4.3.3 小结
          • 4.3.4 总结

4 数据层解决方案

4.3 H2数据库

4.3.1 问题引入

之前我们已经看了SpringBoot 中默认的对数据源、持久化技术对应的解决方案

在这里插入图片描述

问题来了,数据库有吗?【当然毋庸置疑,肯定有的】

4.3.2 内置数据库

SpringBoot提供了3种内嵌数据库供开发者选择,提高开发测试效率

  • H2
  • HSQL
  • Derb

这几个数据库都是用Java 语言开发的【内存模式启动】

三个都足够【轻巧】

先导入坐标

MySQL 的驱动就可以不要了

在这里插入图片描述

jdbc 留着,总得留一个持久层技术吧

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

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

在这里插入图片描述

现在程序一跑起来就自带这个H2 数据库了

添加上web 依赖

在这里插入图片描述

把原来的配置信息都注掉

在这里插入图片描述

# h2 数据库
server:
  port: 80

在这里插入图片描述

OK,启动服务器

在这里插入图片描述

可以明显看到和之前不一样

【h2数据库的管理控制台】

在这里插入图片描述

spring:
  h2:
    console:
      path: /h2
      enabled: true

在这里插入图片描述

再次启动

在这里插入图片描述

打开浏览器 输入localhost/h2

在这里插入图片描述

好家伙

在这里插入图片描述

仔细看看

在这里插入图片描述

在这里插入图片描述

点击连接

在这里插入图片描述

看到报错了 [Database “C:/Users/DingJiaxiong/test” not found, either pre-create it or allow remote database creation (not recommended in secure environments) 90149-214] 90149/90149 (帮助)

改一下配置信息

spring:
  h2:
    console:
      path: /h2
      enabled: true

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

在这里插入图片描述

按照浏览器中的信息配置

重启

在这里插入图片描述

再次尝试点击连接

在这里插入图片描述

OK,这样就进来了【第一次初始化的时候才用配置,之后都可以不用了】

在这里插入图片描述

这些就是表【当然笔者现在的SpringBoot 版本已经和李老师的有区别了】

先来创建一张表

create table tbl_book(id int,type varchar,name varchar,description varchar)

在这里插入图片描述

在这里插入图片描述

这样表就建好了

查一下 select * from tbl_book

在这里插入图片描述

插入数据 insert into tbl_book values(1,'springboot','springboot','springboot')

在这里插入图片描述

再查一下

在这里插入图片描述

这样就有数据了

这就是H2 内嵌数据库的大致使用方法了,接下来就该编程了

@Test
void testJdbcTemplateSave(){

    String sql = "insert into tbl_book values(2,'haha','heihei','xixi')";

    jdbcTemplate.update(sql);

}

直接执行咱们之前的测试【把id 加上】

在这里插入图片描述

好家伙,成功了

再次运行上面那个查询全部的

@Test
void testJdbcTemplate(){

    String sql = "select * from tbl_book";
    RowMapper<Book> rm = new RowMapper<Book>() {
        @Override
        public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
            Book temp = new Book();
            temp.setId(rs.getInt("id"));
            temp.setName(rs.getString("name"));
            temp.setType(rs.getString("type"));
            temp.setDescription(rs.getString("description"));

            return temp;
        }
    };
    List<Book> bookList = jdbcTemplate.query(sql, rm);
    System.out.println(bookList);
}

执行结果:

在这里插入图片描述

妙啊【现在直接就可以用了,不关MySQL 的事儿了】

现在我们接入 MP

在这里插入图片描述

然后JDBC 为了避免版本冲突就可以拿掉了

在这里插入图片描述

把dao 层复活!

package com.dingjiaxiong.dao;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dingjiaxiong.domain.Book;
import org.apache.ibatis.annotations.Mapper;


/**
 * ClassName: BookDao
 * date: 2022/10/20 10:53
 *
 * @author DingJiaxiong
 */

@Mapper
public interface BookDao extends BaseMapper<Book> {
}

直接进行测试

@Autowired
private BookDao bookDao;

@Test
void test() {
    bookDao.selectById(1);
}

运行结果

在这里插入图片描述

看到报错了,BOOK表没找到

MP的配置没开…

在这里插入图片描述

再试一次

在这里插入图片描述

没毛病【大概就是这样了】

回顾一下

设置当前项目为web工程,并配置H2管理控制台参数

在这里插入图片描述

操作数据库(创建表)

在这里插入图片描述

设置访问数据源

在这里插入图片描述

H2数据库控制台仅用于开发阶段,线上项目请务必关闭控制台功能

在这里插入图片描述

SpringBoot可以根据url地址自动识别数据库种类,在保障驱动类存在的情况下,可以省略配置

在这里插入图片描述

牛逼牛逼

4.3.3 小结
  1. H2内嵌式数据库启动方式
  2. H2数据库线上运行时请务必关闭
4.3.4 总结

现有数据层解决方案技术选型

在这里插入图片描述

  1. 数据源配置(Hikari)
  2. 持久化技术(JdbcTemplate)
  3. 数据库(H2

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

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

相关文章

微信小程序使用npm教程

首先打开工具-详情-勾选使用npm模块 使用npm的步骤&#xff1a; 1. 安装 npm 包 在小程序 package.json 所在的目录中执行命令安装 npm 包&#xff1a; npm install此处要求参与构建 npm 的 package.json 需要在 project.config.json 定义的 miniprogramRoot 之内。 tips&am…

【大数据存储技术】思考题及参考答案

文章目录第1章 绪论1. NoSQL和关系型数据库在设计目标上有何主要区别&#xff1f;2. 简要总结一下NoSQL数据库的技术特点。第2章 NoSQL数据库的基本原理1. 描述分布式数据管理的特点。2. 什么是CAP原理&#xff1f;CAP原理是否适用于单机环境&#xff1f;3. 简述BASE理论的具体…

【附源码】计算机毕业设计JAVA校园疫情防控管理软件

【附源码】计算机毕业设计JAVA校园疫情防控管理软件 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA…

(SVN+SSH)搭建SVN并使用SSH进行免密拉取推送代码

【SVNSSH】搭建SVN并使用SSH进行免密拉取推送代码一、安装svn、openssh-server服务二、开启svn服务&#xff0c;创建测试仓库&#xff0c;并能通过账号密码拉取定义svn仓库文件位置创建仓库:acc_repo配置拉取仓库的账号密码通过账号密码拉取代码三、创建测试仓库&#xff0c;通…

云安全系列3:如何构建云安全策略

云计算拯救了很多企业&#xff0c;因为它可以迅速调整以支持更大规模的工作以及更多的在线用户。随着2023年的到来&#xff0c;宏观经济逆风聚集&#xff0c;它将更加具有吸引力&#xff0c;这归功于它更高的业务敏捷性和更优的成本效率比。Gartner 预测&#xff0c;到 2023 年…

聚观早报|腾讯员工平均月薪超8万;马斯克考虑卸任特斯拉CEO

今日要闻&#xff1a;腾讯员工平均月薪超8万&#xff1b;马斯克考虑卸任特斯拉CEO&#xff1b;iPhone双十一销量近350万部&#xff1b;暴雪将在大陆暂停多数服务&#xff1b;高德地图上线北斗卫星定位查询系统腾讯员工平均月薪超8万 据报道&#xff0c;腾讯控股11月16日发布202…

4-8岁儿童EEG微状态研究:年龄和性别的影响

大规模神经网络的超快时空动态可以通过静息状态脑电图&#xff08;EEG&#xff09;微观状态来检验&#xff0c;这代表了随时间动态演化的同步神经活动的短暂时期。在成人中&#xff0c;四种典型的微观状态已被证明可以解释静息状态脑电图的大部分地形差异。它们的时间结构依赖于…

【北亚数据恢复】硬盘出现坏道的数据恢复方案

经常使用电脑和移动硬盘的用户&#xff0c;如果察觉到电脑运行速度变得很慢&#xff0c;即使做了磁盘整理和系统重装操作后速度还是没有恢复到正常状态&#xff0c;这个时候就要小心是硬盘盘片出现坏道了。 如果这个时候用硬盘检测软件扫描硬盘就会发现扫描界面上出现很多绿块&…

SEO的了解

什么是SEO SEO&#xff0c;也就是搜索引擎优化的逻辑&#xff0c;其实是非常简单的。这就像是在大学里的学生会主席&#xff0c;你要让投票者给你更多的选票。那么&#xff0c;你需要先「自我优化」&#xff0c;无论是外表还是能力&#xff1b;此外&#xff0c;你还需获得更多…

【猿创征文】Vue3 企业级优雅实战 - 组件库框架 - 7 组件库文档的开发和构建

本系列已更新文章&#xff1a; 分享一个实用的 vite vue3 组件库脚手架工具&#xff0c;提升开发效率 开箱即用 yyg-cli 脚手架&#xff1a;快速创建 vue3 组件库和vue3 全家桶项目 Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo Vue3 企业级优雅实战 - 组件库框架…

Vue2的路由和异步请求

目录 1.路由 1.1路由的作用 1.2使用CLI3创建带路由功能的Vue2项目(案例) &#xff08;1&#xff09;创建vue项目 &#xff08;2&#xff09;选择手动设置特性&#xff08;Manually select features&#xff09; &#xff08;3&#xff09;添加路由特性选项 1.3 路由使用入门 …

企业如何利用APS排程软件建立起精益供应链与生产体系

精益供应链&#xff0c;英文称为Lean Supply Chains&#xff0c;它来源于精益管理&#xff0c;将从产品设计到顾客得到产品&#xff0c;整个过程所必需的步骤和合作伙伴整合起来&#xff0c;快速响应顾客多变的需求&#xff0c;其核心是减少、消除企业中的浪费&#xff0c;用尽…

skywalking全链路追踪

系统: centos7.6.1810 内核: 3.10.0-957.el7.x86_64 一、先下载相关的工具 官网下载地址: https://skywalking.apache.org/downloads/ openresty官网下载地址: http://openresty.org/en/download.html 下载openresty工具&#xff0c;捆绑了lua模块&#xff0c;收集日志需要用到…

Arctic——流式湖仓系统

1、Arctic介绍 Arctic 是由网易开源的流式湖仓系统&#xff0c;Arctic 在 Iceberg 和 Hive 之上添加了更多实时场景的能力&#xff0c;并且面向 DataOps 提供流批统一&#xff0c;开箱即用的元数据服务&#xff0c;让数据湖更加好用和实用。 Arctic 是搭建在 Apache Iceberg …

详解MybatisPlus数据安全

MybatisPlus数据安全 概述 ​ 存在数据库中的数据对于普通用户而言是不可见的&#xff0c;好像是藏起来了一样&#xff0c;但对于开发者&#xff0c;只要知道数据库的连接地址、用户名、密码&#xff0c;则数据不再安全&#xff1b;这也意味着&#xff0c;一旦连接数据库的配…

卡塔尔世界杯倒计时!世界杯直播在哪里观看?美家市场汇总来了!

来了来了&#xff0c;2022卡塔尔世界杯倒计时3天&#xff01;2022卡塔尔世界杯将在北京时间11月21日开始&#xff0c;持续时间28天&#xff0c;至2022年12月18日结束&#xff0c;将近一个月的赛程让众多球迷们期待不已&#xff0c;这一个月将是全世界球迷们最快乐的一个月&…

【网站架构】如何长久运行升级?高可用部署只是基础,巡检、监控、应用数据备份、日志、灰度发布

大家好&#xff0c;欢迎来到停止重构的频道。本期讨论大型网站的可用性。 高可用指的是当一部分服务器宕机时&#xff0c;网站系统仍可正常运行。 一些常用的软件服务的高可用部署方案 &#xff0c;如Tomcat、Nginx、Redis、MySQL等&#xff0c;在往期性能调优时已经有详细的介…

H5组件Canvas画电子印章

效果图 代码 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>HTML5 Canvas印章</title> <script type"text/javascript" src"https://code.jquery.com/jquery-2.2.4.js"></scri…

电科大离散数学-4-二元关系

目录 4.1 序偶和笛卡尔积 4.1.1 有序组的定义 4.1.2 笛卡儿积 4.1.3 笛卡儿积的性质 4.1.4 推广 4.2 关系的定义 4.2.1 二元关系的定义 4.2.2 二元关系的数学符号 4.2.3 枚举二元关系 4.2.4 几种重要关系 4.2.5 定义域和值域 4.2.6 n元关系 4.3 关系的表示 4.3.1…

[附源码]SSM计算机毕业设计中小型艺术培训机构管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…