简单介绍

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

  • H2
  • HSQL
  • Derby

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

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

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

环境介绍

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

com.h2databaseh2org.springframework.bootspring-boot-starter-data-jpaorg.springframework.bootspring-boot-starter-web

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

server.port=80spring.h2.console.enabled=truespring.h2.console.path=/h2spring.datasource.driver-class-name=org.h2.Driverspring.datasource.username=saspring.datasource.password=123456spring.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层。

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

org.springframework.bootspring-boot-starter-weborg.mybatis.spring.bootmybatis-spring-boot-starter2.3.1com.mysqlmysql-connector-jruntimeorg.projectlomboklomboktrueorg.springframework.bootspring-boot-starter-testtestorg.mybatis.spring.bootmybatis-spring-boot-starter-test2.3.1testcom.alibabadruid-spring-boot-starter1.2.8com.h2databaseh2org.springframework.bootspring-boot-starter-data-jpa

配置文件:

spring:h2:console:enabled: truepath: /h2datasource: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,这些我们之前都已经看过了,所以我这里直接展示测试类中的测试方法:

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