SpringBoot——内置数据库

简单介绍

关于数据层的三大组件,数据源,持久化技术,数据库。前两种都已经介绍过了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层。

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

XML 复制代码
<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>

配置文件:

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

H2数据库SQL语句:

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

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

java 复制代码
@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,注意在使用的时候要导入对应的依赖既可。

相关推荐
.生产的驴8 分钟前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
爱学的小涛16 分钟前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio
爱学的小涛17 分钟前
【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解
java·开发语言·笔记·后端·nio
北极无雪21 分钟前
Spring源码学习:SpringMVC(4)DispatcherServlet请求入口分析
java·开发语言·后端·学习·spring
hefaxiang25 分钟前
【MYSQL】mysql约束---自增长约束(auto_increment)
数据库·mysql
琴智冰25 分钟前
SpringBoot
java·数据库·spring boot
爱码少年27 分钟前
springboot工程中使用tcp协议
spring boot·后端·tcp/ip
AAEllisonPang33 分钟前
Oracle 时间计算
数据库·oracle
m0_7164990634 分钟前
达梦8-数据守护集群主备故障实验和脑裂处理
数据库
《源码好优多》44 分钟前
基于SpringBoot+Vue+Uniapp的植物园管理小程序系统(2024最新,源码+文档+远程部署+讲解视频等)
vue.js·spring boot·uni-app