SpringBoot_开发实用篇_数据源

数据源

SQL解决方案(关系型数据库)

内置数据源——Hikari

之前的springboot+mybatis-plus/mybatis+mysql中没有导入druid,那里面有没有呢?先回顾数据源配置格式
SpringBoot_开发实用篇_数据源_第1张图片
格式二常用,但需要导入druid的starter,格式1不需要。

  • 如果我们使用格式2测试是否调用了druid
    在这里插入图片描述
  • 使用格式1测试是否使用了druid数据源
    在这里插入图片描述
    也做了初始化
  • 把druid去掉
    在这里插入图片描述
    还是有。
    导入了druid的starter就会调用,把starter删掉,就不会加载druid的数据源了。
    SpringBoot_开发实用篇_数据源_第2张图片
    springboot不加载第三方数据源就会调用内嵌的HikarDataSource,
    在这里插入图片描述
    Springboot内嵌了三种数据源
    SpringBoot_开发实用篇_数据源_第3张图片
    可以将用户名、密码等配置在hikari下,eg:
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/ssmp_db
    hikari:
      driver-class-name: com.mysql.cj.jdbc.Driver
      username: root
      password: "!Wzh2352186607"

注意不能再hikari下配置url,URL放在外层!!!

内置持久化方案——JdbcTemplate

spring内置的持久化方案——JdbcTemplate技术
需要导入spring-jdbc的starter
SpringBoot_开发实用篇_数据源_第4张图片
发现这个starter依赖于hikari
SpringBoot_开发实用篇_数据源_第5张图片
测试使用
SpringBoot_开发实用篇_数据源_第6张图片

内置数据库——H2/HSQL/Derby

SpringBoot_开发实用篇_数据源_第7张图片
相似:都是用java写的,都可以在内存中启动(伴随着程序的启动而启动);小巧,测试方便;运行速度快。

  • 启动方法
    加入坐标
    SpringBoot_开发实用篇_数据源_第8张图片
    SpringBoot_开发实用篇_数据源_第9张图片
    在浏览器输入对应path
    SpringBoot_开发实用篇_数据源_第10张图片
    (第一次)启动需要配置yml, 代码测试(需要开启yml配置)
    SpringBoot_开发实用篇_数据源_第11张图片
    上限的时候需要关闭控制台。
    SpringBoot_开发实用篇_数据源_第12张图片
    SpringBoot_开发实用篇_数据源_第13张图片

NoSQL解决方案(非关系型数据库)

这些通常在linux系统中部署,为了降低学习者压力,暂时基于windows学习

Redis

快速入门

笔记可以参考:https://zhangc233.github.io/2021/05/02/Redis/

启动

SpringBoot_开发实用篇_数据源_第14张图片

在redis的安装路径唤出cmd,

  • 启动服务
    redis-server.exe redis.windows.conf
  • 启动客户端
    redis-cli.exe
key-value型数据处理
  • 放入数据
    set 键 值
  • 获取数据
    get 键 值
  • 修改数据
    和set一样
  • 查询所有key
    keys*
  • 清屏clear
哈希结构数据处理

SpringBoot_开发实用篇_数据源_第15张图片

  • 放数据hset key名 key里面的key名 value
    在这里插入图片描述
  • 获取数据hget key名 key里面的key名
    SpringBoot_开发实用篇_数据源_第16张图片

SpringBoot整合redis

  • 导入坐标
    SpringBoot_开发实用篇_数据源_第17张图片
  • 配置
    spring.redis下面的是redis相关的配置
    spring.redis.cache是使用redis解决缓存相关的配置
    spring.redis.session是解决session共享问题的相关配置
spring:
  redis:
    host: localhost
    port: 6379 #注意不写默认是这两个值
  • 操作
    操作redis的模板对象RedisTemplate
    通过opsFor***方法选择数据结构?
    SpringBoot_开发实用篇_数据源_第18张图片
@SpringBootTest
public class redisTest {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    void set(){
        ValueOperations ops = redisTemplate.opsForValue();//使用普通key-value结构
        ops.set("age",41);
    }
    @Test
    void get(){
        ValueOperations ops = redisTemplate.opsForValue();
        System.out.println(ops.get("age"));
    }

    @Test
    void hset(){
        HashOperations hops = redisTemplate.opsForHash();//使用哈希结构
        hops.put("conf","port",90);
    }
    @Test
    void hget(){
        HashOperations hops = redisTemplate.opsForHash();
        System.out.println(hops.get("conf","port"));
    }

}

使用@Autowired注入虽然可以使用,但是在编译器里会爆红,推荐使用@Resource。原因是这个类型带泛型我们却没有指定泛型,使用@Autowired是根据类型注入的,而@Resource是现根据name注入,找不到采用类型注入
SpringBoot_开发实用篇_数据源_第19张图片

RedisTemplate泛型问题

客户端存放的数据java程序查询不到。
在这里插入图片描述
StringRedisTemplate和RedisTemplate的区别是后者以对象为基本单位操作(因为StringRedisTemplate和RedisTemplate相比,他的泛型是固定了的),前者以字符串为基本单位操作。在客户端(cmd界面)操作是以字符串为基本单位操作的,所以redisTemplate查询不到。

@SpringBootTest
public class StringRedisTemplateTest {
    @Resource
    private StringRedisTemplate stringRedisTemplate;
    @Test
    void get(){
        ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
        System.out.println(ops.get("name"));
    }
}

SpringBoot_开发实用篇_数据源_第20张图片

jedis技术

jedis就是基于java语言的redis客户端,集成了redis的命令操作,提供了连接池管理。
redis-cli是redis官方提供的客户端,可以看作一个shell程序,它可以发送命令对redis进行操作。
springboot能用jedis,但是默认不是这个技术,想要使用只需导入依赖,配置配置信息

  • 依赖
	<dependency>
            <groupId>redis.clientsgroupId>
            <artifactId>jedisartifactId>
    dependency>
  • 配置
spring:
  redis:
    client-type: jedis

而springboot默认的客户端技术是lettucus
SpringBoot_开发实用篇_数据源_第21张图片

MongoDB

mysql可以存储结构数据但是不够快,redis存储快但是不能存储结构数据。MongoDB则填补了二者的空白。他是高性能的无模式文档型数据库,是最像关系型数据库的非关系型数据库。
业务场景:
SpringBoot_开发实用篇_数据源_第22张图片

快速入门

  • 服务端启动
    在安装目录下的bin输入cmd,执行
    mongod --dbpath=…/data/db后面是指定数据存储的位置
    在这里插入图片描述
  • 客户端启动
    还是在bin目录下,mongo
    SpringBoot_开发实用篇_数据源_第23张图片
    这个客户端不好用,自己又装了studio 3T
  • 使用库
    use 库名
  • studio3t客户端创建集合(相当于关系型数据库的集合 )
    右键->add collection
  • studio3t客户端CRUD界面
    右键->open intelliShell
    eg:
    db.getCollection(“book”).find({}) 查找book表,并去查询所有数据
  • 添加文档(这里的文档相当于mysql的数据)
    db.book.save({“name”:“springboot”})/db.getCollection(“book”).save({“name”:“springboot”})
    这里数据的格式类似于json但不是json(属性名可以加双引号,也可以不加)

再次查询(这个客户端的文档查询结果支持三种形式)
SpringBoot_开发实用篇_数据源_第24张图片
在这里插入图片描述
在这里插入图片描述
无模式:
SpringBoot_开发实用篇_数据源_第25张图片

  • 有条件查询
    db.book.find({}) {}内写条件就行,{}里面是类似json的格式
  • 删除
    db.book.remove({}) {}内写条件,注意不写条件直接把数据全删除了(真删库跑路!!)
  • 修改
    db.book.update({name:“springboot”},{$set:{name:“springboot2”}})
    SpringBoot_开发实用篇_数据源_第26张图片
    只改了第一条(update语句只修改遇到符合条件的第一条数据)
    updateOne只修改一条,updateMany修改多条数据
    SpringBoot_开发实用篇_数据源_第27张图片

整合Mongodb

  • 引入依赖
  • 数据库配置
spring:
  data:
    mongodb:
      uri: mongodb://localhost/local

这个uri是规定的格式,必须是mongodb://localhost/…

  • 使用MongoTemplate对象
@SpringBootTest
public class MongodbTest {
    @Resource
    private MongoTemplate mongoTemplate;
    @Test
    void test(){
        Book book = new Book();
        book.setId(1);
        book.setName("ssmp");
        book.setPrice(120);
        mongoTemplate.save(book);
    }
}

在这里插入图片描述
除了各个属性外还将类型也添加进去了。

  • 查询
    SpringBoot_开发实用篇_数据源_第28张图片
    在这里插入图片描述

ES

这是一种分布式全文搜索引擎
SpringBoot_开发实用篇_数据源_第29张图片

你可能感兴趣的:(自学自用,spring,boot,java,spring)