数据层解决方案

springboot接入h2单测 h2 springboot_springboot接入h2单测

SpringBoot提供了三种内嵌的数据源对象 , 供开发者选择

  • HikariCP (默认的使用技术) : 需要配置对应的属性
  • Tomcat提供DataSource
  • Commons DBCP

(1)SQL

SpringBoot提供了三种内嵌的数据库供开发者选择 : 这三个数据库都是使用java语言写的 , 可以将管理交给Spring容器管理 , 也就是说 , 在启动Spring的时候 , 能够将这些数据库启动起来 , 可以在内存中启动 , 体量小 , 只有几百k

  • HSQL
  • Derby
  • H2
<!--首先导入H2相关的坐标-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

使用这个数据库 , 需要配置开启H2的控制页面显示 :

spring:
  h2:
    console:
      enabled: true #开启控制页面
      path: /h2  #控制控制台页面的访问路径

在浏览器上输入 : localhost:8080/h2 , 就会显示这个页面

springboot接入h2单测 h2 springboot_SpringBoot_02

下面四个值需要在配置文件中配置

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

(2)NoSQL

  • Redis
  • Mongo
  • Es

(3)SpringBoot整合Redis:

  • (1)在创建项目的时候 , 选择Redis , 导入对应的依赖 ,
  • (2)在配置文件中设置 Redis的 Host 和 Port (这里加不加都可以 , 默认值就是本机 , port=6379)
spring:
  redis:
    host: localhost
    port: 6379
  • (3)注入Redis的template , RedisTemplate
@Autowired
private RedisTemplate redisTemplate;

使用 :

自动生成的类型 ops = redisTemplate.ops* : //获取各种数据类型操作接口
ops.set("key","value");

springboot接入h2单测 h2 springboot_spring_03


注意事项 :

对象名称

操作的类型

RedisTemplate < K , V >

没有指定类型, 默认操作的是Object类型的

StringRedisTemplate

操作的是字符串类型的数据(Redis中使用的就是字符串 , 所以注入这个对象)


(4)SpringBoot整合Redis(使用jedis)

  • 在pom文件中导入对应的依赖 :
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>
  • 在配置文件中 : 设置使用的技术 :
  • SpringBoot默认使用的是lettuce
  • 设置使用jedis操作redis :
spring:
  redis:
    host: localhost
    port: 6379
    client-type: jedis #选择使用那种技术 :默认的是lettuce , 可以设置为jedis
    #对lettuce进行配置
    lettuce:
      pool:
        max-active: 16
    #对jedis进行配置
    jedis:
      pool:
        max-active: 16

注意 :

springboot接入h2单测 h2 springboot_数据_04


MongoDB:

需求分析:

我们在使用数据库技术的时候 , 我们有这样的需求 :

  • 操作结构化的数据 , (使用mysql)
  • 同时要追求高的速度 , (使用redis)

但是 , 二者不能同时处理我们的需求 , 这个时候就要使用MongoDB


MongoDB是一个开源的 , 高性能的的, 无模式的文档型数据库 , NoSQL数据库产品中 , 是最像关系型数据库的非关系型数据库


例子 :

数据种类

存储位置

特征

淘宝用户数据

数据库

永久性存储 , 修改频度极低

游戏装备数据

数据库,MongoDB

永久性存储与临时存储相结合 , 修改频度较高

直播数据,打赏数据,粉丝数据

数据库,MongoDB

永久性存储与临时存储相结合 , 修改频度极高

物联网数据

MongoDB

临时存储 , 修改频度飞速


下载安装使用 :

  • windows版Mongodb下载
  • windows版Mongo安装 :
  • 解压缩之后设置数据目录 : 在bin目录同级的目录之下 …\data\db
  • windows版Mongo启动 :
  • 服务端启动 : (在bin目录下进入cmd中)
mongod --dbpath=..\data\db
  • 客户端启动 : (port在启动服务端的时候 , 会显示这个值)
mongo --host=127.0.0.1 --port=27017
  • 使用操作客户端 :
  • Robo 3T : (这个是目前使用比较好的客户端软件)
  • studio-3T : (这个是MongoDB官方推荐的)
  • Navicat旗舰版也支持连接MongoDB

简单操作:

这里的样式虽然和json很像 , 但是这里叫做bson , 和json的书写格式是一样的

这个数据库可以支持无模式存储数据 :

springboot接入h2单测 h2 springboot_SpringBoot_05

操作

语法格式

添加操作

db.ceshi.save({name:"sichen"}) , key值可以不用加双引号 , 其中ceshi是文档的名称

查询操作

db.ceshi.find({name:"sichen"})

删除操作

db.ceshi.remove({name:"sichen"})

修改操作

db.ceshi.update({name:"sichen"},{$set:{name:"aisichen"}})

springboot接入h2单测 h2 springboot_SpringBoot_06


SpringBoot整合MongoDB

  • 导入MongoDB的starter依赖坐标
  • 编写配置文件 :
spring:
  data:
    mongodb:
      uri: mongodb://localhost/sichen
      #只需要配置一个uri即可连接 /后边加的是datasource的名字

"}})

[外链图片转存中…(img-0kDAvG66-1649864153343)]


SpringBoot整合MongoDB

  • 导入MongoDB的starter依赖坐标
  • 编写配置文件 :
spring:
  data:
    mongodb:
      uri: mongodb://localhost/sichen
      #只需要配置一个uri即可连接 /后边加的是datasource的名字
  • 操作 : 注入MongoTemplate对象即可使用mongo的方法进行操作