50、Spring Boot 详细讲义(七) Spring Boot 与 NoSQL

时间:2025-04-16 18:57:24

七 Spring Boot 与 NoSQL

目录

  • MongoDB 集成
  • Redis 集成
  • Elasticsearch 集成

1、 MongoDB 集成

1.1 MongoDB 概述

1.1.1 MongoDB 的基本概念
  • 文档型数据库
    • 数据存储为类似 JSON 的文档结构(BSON 格式)。
    • 每个文档由字段和值对组成,类似于键值对。
    • 支持嵌入式文档和数组,灵活性高。
  • BSON 格式
    • BSON(Binary Serialized JSON)是 JSON 的二进制形式。
    • 比 JSON 更高效,支持更多数据类型(如日期、二进制数据等)。
  • MongoDB 的核心特点
    • 模式*:无需预定义模式,灵活变更。
    • 高可用性:支持副本集和分片,确保数据可用性。
    • 高扩展性:通过分片处理大规模数据。
    • 高性能:查询优化和索引支持。
1.1.2 MongoDB 的安装与简单使用
  • 安装 MongoDB

    1. 下载:从官方网站下载适合的版本(Community Server 或 Enterprise Server)。
    2. 安装
      • Windows:使用 MSI 安装包安装。
      • Linux:使用包管理器(如 apt、yum)安装。
      • macOS:使用 Homebrew 或手动下载安装。
    3. 启动:运行 mongod 命令启动数据库服务。
  • Mongo Shell 的使用

    • 启动 Shell:在命令行输入 mongo

    • 基本操作:

      # 显示所有数据库  
      show dbs  
      
      # 切换到指定数据库(若不存在则创建)  
      use mydb  
      
      # 插入文档  
      db.mycol.insertOne({
             name: "John", age: 30})  
      
      # 查询文档  
      db.mycol.find()  
      

1.2 Spring Boot 与 MongoDB 集成

1.2.1 项目结构与依赖配置
  • Maven 依赖
    pom.xml 中添加以下依赖:

    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-data-mongodb</artifactId>  
    </dependency>  
    
  • Gradle 依赖
    build.gradle 中添加:

    dependencies {
           
        implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'  
    }  
    
  • 项目结构

    • src/main/java:存放 Java 源文件。
    • src/main/resources:存放配置文件(application.properties)。
1.2.2 使用 Spring Data MongoDB 实现 CRUD 操作
  • 创建文档模型

    @Document(collection = "users")  
    public class User {
           
        @Id  
        private String id;  
        private String name;  
        private int age;  
        // Getter 和 Setter 方法  
    }  
    
  • 创建getRepository接口

    public interface UserRepository extends MongoRepository<User, String> {
           
    }  
    
  • 实现 CRUD 操作

    @Service  
    public class UserService {
           
        @Autowired  
        private UserRepository userRepository;  
    
        public void create(User user) {
           
            userRepository.save(user);  
        }  
    
        public List<User> read() {
           
            return userRepository.findAll();  
        }  
    
        public void update(User user) {
           
            userRepository.save(user);  
        }  
    
        public void delete(String id) {
           
            userRepository.deleteById(id);  
        }  
    }  
    
1.2.3 MongoDB 配置
  • application.properties 配置

    spring:  
      data:  
        mongodb:  
          uri: mongodb://localhost:27017/  
          database: mydb  
    
  • 连接池配置

    spring.data.mongodb.connection.pool.size=20  
    

1.3 高级功能

1.3.1 分页查询与排序
  • 分页查询

    public List<User> findAll(Pageable pageable) {
           
        return userRepository.findAll(pageable).getContent();  
    }  
    

    使用方式:

    PageRequest pageRequest = PageRequest