数据层解决方案
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 , 就会显示这个页面
下面四个值需要在配置文件中配置
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");
注意事项 :
对象名称 | 操作的类型 |
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
注意 :
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的书写格式是一样的
这个数据库可以支持无模式存储数据 :
操作 | 语法格式 |
添加操作 | 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整合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的方法进行操作