MongoDB文档-进阶使用-spring-boot整合使用MongoDB---MongoRepository完成增删改查

这篇具有很好参考价值的文章主要介绍了MongoDB文档-进阶使用-spring-boot整合使用MongoDB---MongoRepository完成增删改查。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

阿丹:

        之前学习了在MongoDB客户端上的MongoDB语句现在将MongoDB整合到spring项目。

  传送门:

MongoDB文档--基本概念_一单成的博客-CSDN博客

MongoDB文档--基本安装-linux安装(mongodb环境搭建)-docker安装(挂载数据卷)-以及详细版本对比_一单成的博客-CSDN博客

MongoDB文档--基本安装-linux安装(mongodb环境搭建)-docker安装(挂载数据卷)-以及详细版本对比_一单成的博客-CSDN博客

MongoDB文档-基础使用-在客户端(dos窗口)/可视化工具中使用MongoDB基础语句_一单成的博客-CSDN博客

MongoDB文档-进阶使用-MongoDB索引-createindex()与dropindex()-在MongoDB中使用正则表达式来查找_一单成的博客-CSDN博客

MongoDB文档-进阶使用-spring-boot整合使用MongoDB---MongoTemplate完成增删改查_一单成的博客-CSDN博客

使用技术介绍:

        概念说明:

        spring-data-mongodb 提供 MongoTemplate 与 MongoRepository两种操作方式
MongoRepository 操作简单 缺点是不够灵活
MongoTemplate 操作灵活,在项目中可以灵活使用这两种方式

MongoTemplate 

        MongoTemplate是Spring Data MongoDB项目的一部分,它是一个Spring的扩展,为使用MongoDB数据库的应用程序提供了抽象层。MongoTemplate提供了一个简单而强大的方法来执行各种数据库操作,而无需编写低级别的MongoDB驱动程序代码。

MongoTemplate的主要功能包括:

  1. 插入和更新文档:MongoTemplate提供了一种方便的方法来插入和更新MongoDB数据库中的文档。
  2. 查询文档:MongoTemplate提供了多种查询方法,可以使用各种查询参数来检索数据库中的文档,包括查询条件、排序、限制和投影。
  3. 聚合操作:MongoTemplate支持聚合框架,可以执行复杂的聚合操作,如计数、分组、求和等。
  4. 索引管理:MongoTemplate可以创建、删除和查询数据库索引。
  5. 命令和操作:MongoTemplate还支持各种数据库命令和操作,如计算数据库统计信息、执行存储过程等。

使用MongoTemplate可以简化MongoDB数据库操作的开发工作,提供更高的生产力和更好的可维护性。

MongoRepository

MongoRepository是Spring Data MongoDB项目中的另一个抽象层,它是基于MongoTemplate的更高级别的抽象。MongoRepository提供了一个基于注解的接口,用于定义与MongoDB数据库的交互。通过使用MongoRepository,你可以专注于定义数据访问逻辑,而无需编写低级别的数据库操作代码。

MongoRepository的主要功能包括:

  1. 查询文档:MongoRepository提供了一种方便的方法来查询数据库中的文档。通过使用注解,你可以定义查询条件、排序、限制和投影。
  2. 聚合操作:MongoRepository支持聚合框架,可以执行复杂的聚合操作,如计数、分组、求和等。
  3. 分页查询:MongoRepository提供了分页查询功能,可以限制查询结果的数量并获取下一页的结果。
  4. 自定义查询:如果你需要执行更复杂的查询操作,MongoRepository还提供了自定义查询的方法,可以编写存储过程或使用MongoDB的查询语言执行自定义查询。

使用MongoRepository可以使你的代码更加简洁和可维护,因为它提供了一种声明式的方式来访问MongoDB数据库。通过注解和自动实现的接口,你可以专注于实现业务逻辑,而无需关心底层的数据库操作细节。

spring-boot中使用MongoRepository进行增删改查

阿丹:

        使用MongoRepository的好处是和 MyBatis-Plus很像提供了很多经过封装好的方法。很方便(对于简单的增删改查来说)。但是我发现竟然没有!!修改的封装好的用法。

1、引入依赖

 核心依赖:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

这个依赖是Spring Boot提供的用于与MongoDB数据库进行交互的starter依赖。它包含了所需的库和依赖项,以便在使用Spring Boot开发应用程序时方便地使用MongoDB。

具体来说,这个依赖提供了以下功能:

  1. 自动配置:Spring Boot会自动配置与MongoDB数据库的连接,包括创建Mongo客户端、设置连接属性等。
  2. MongoTemplate:自动配置了MongoTemplate,这是一个用于执行各种数据库操作的核心类。通过使用MongoTemplate,你可以方便地进行文档的插入、更新、查询等操作。
  3. MongoRepository:自动配置了MongoRepository,这是一个基于注解的接口,用于定义与MongoDB数据库的交互。通过继承MongoRepository,你可以方便地进行查询、聚合操作等。
  4. 模板化操作:通过使用MongoTemplate和MongoRepository,你可以以模板化的方式执行数据库操作,这使得代码更加简洁、可读性更好。

总之,通过添加这个依赖,可以方便地使用Spring Boot与MongoDB进行集成,而无需手动配置和编写低级别的数据库操作代码。

其他依赖:(如果小伙伴想直接开启一个简单的spring-boot项目可直接拿走)

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

2、写入连接MongoDB配置文件采用application.yml文件

spring:
  data:
    mongodb:
      host: 127.0.0.1 #指定MongoDB服务地址
      port: 27017 #指定端口,默认就为27017
      database: article#指定使用的数据库(集合)
      authentication-database: admin # 登录认证的逻辑库名
      username:  #用户名
      password:  #密码

注意:

        如果没有设置连接的用户的话可以根据实际情况删除一部分配置文件。

        相对于MySQL不一样的是:在MySQL中一个用户可以管理多个数据库,但是MongoDB每个库都要一个独立的管理用户,连接的时候需要输入对应的用户密码。

3、有关实体类的书写(有坑注意!!)

主要注解:

         1、@Document,对应MongoDB中的文档,也就是数据库中的最基本的数据单元,由键值对组成,类似于JSON格式,可以存储不同字段,字段的值可以包括其他文档,数组和文档数组。

        2、@Id(主键):用来将成员变量的值映射为文档的_id的值,可以看我之前的文档有讲到如何给_id赋值。

        3、@Index(索引):索引是一种特殊的数据结构,存储在一个易于遍历读取的数据集合中,能够对数据文档中的数据进行排序。索引可以大大提高文档查询效率。

        4、@Field(字段):文档中的字段,类似于MySQL中的列概念。

        5、@Aggregation(聚合):聚合主要用于数据处理,例如统计平均值、求和等。

示例:

package com.adn.mongodb.common;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

/**
 * 阿丹实体类
 * */
@Data
@Document(collection = "ExampleDB")
public class Adn {
    @Id
    @Field("_id")
    private Long id;//阿丹主键
    @Field("name")
    private String name;//阿丹名称
    @Field("gender")
    private String gender;//阿丹性别
    @Field("specialty")
    private String specialty;//特长描述
}

示例中的 Document就是集合的名字

注意:

        一定要去写@Field("name")这个注解,映射到字段的名字,不然查到的都是空!!!

4、使用MongoRepository来完成简单增删改查

这个都是底层封装好的代码,这里直接上代码!如果有疑惑欢迎评论区讨论一下子 

controller控制层

package com.adn.mongodb.controller;

import com.adn.mongodb.common.Adn;
import com.adn.mongodb.service.MongodbService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 控制层器
 * */
@RestController
public class MongodbController {
    @Autowired
    private MongodbService mongodbService;


    /**
     * 根据id来进行查询
     * */
    @GetMapping("/adn/{id}")
    public Adn  adn(@PathVariable String  id) {
        System.out.println(id);
        return mongodbService.adn(id);
    }
    /**
     * 增加数据插入数据
     * */
    @PostMapping("/save")
    public Adn  save(@RequestBody Adn adn) {
        return mongodbService.save(adn);
    }
    // @RequestMapping("/adn")
    // public String adn() {

    /**
     * 修改
     * */
    @PutMapping("/update")
    public Adn update(@RequestBody Adn adn) {

        return mongodbService.update(adn);
    }
    /**
     * 插入因为没有对应的方法,所以使用单查询+删除+新增来处理
     * */

    /**
     * 删除
     * */
    @DeleteMapping("/delete/{id}")
    public void delete(@PathVariable String id) {
        mongodbService.delete(id);
    }


}

service层接口

package com.adn.mongodb.service;

import com.adn.mongodb.common.Adn;

public interface MongodbService {
    Adn adn(String id);


    Adn save(Adn adn);

    Adn update(Adn adn);

    void delete(String id);
}

service层实现类

package com.adn.mongodb.service.Impl;

import com.adn.mongodb.common.Adn;
import com.adn.mongodb.mapper.AdnMapper;
import com.adn.mongodb.service.MongodbService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigurationPackage;
import org.springframework.stereotype.Service;

import java.util.Optional;

@Service
public class MongodbServiceImpl implements MongodbService {
    @Autowired
    private AdnMapper adnMapper;
    @Override
    public Adn adn(String id) {
        Adn res = null;
        Optional<Adn> byId = adnMapper.findById(id);
        System.out.println(byId);
        boolean present = byId.isPresent();
        if(present){
            res = byId.get();
        }
        return res;
    }

    @Override
    public Adn save(Adn adn) {
        return adnMapper.save(adn);
    }

    @Override
    public Adn update(Adn adn) {
        return adnMapper.updata(adn);
    }

    @Override
    public void delete(String id) {
        adnMapper.deleteById(id);
    }


}

dao层(我因为习惯所以写了mapper)

重点:要继承MongoRepository这个类!!!文章来源地址https://www.toymoban.com/news/detail-632946.html

package com.adn.mongodb.mapper;

import com.adn.mongodb.common.Adn;
import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.Optional;

public interface AdnMapper extends MongoRepository<Adn, String> {
    
}

到了这里,关于MongoDB文档-进阶使用-spring-boot整合使用MongoDB---MongoRepository完成增删改查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot进阶(55):SpringBoot之集成MongoDB及实战使用 | 超级详细,建议收藏

            随着大数据时代的到来,数据存储和处理变得越来越重要。而MongoDB作为一种非关系型数据库,具有高效的数据存储和处理能力,被越来越多地应用于各种领域。尤其在Web应用开发中,SpringBoot框架已经成为了主流选择之一。在这篇文章中,我们将探讨如何将MongoD

    2024年02月17日
    浏览(32)
  • Spring Boot 整合 MongoDB 实战

    MongoDB是一种NoSQL数据库,而Spring Boot是一个用于快速构建Java应用程序的开发框架。本文将介绍如何使用Spring Boot整合MongoDB,实现数据的持久化和操作。通过本文的学习,读者将了解到Spring Boot和MongoDB的基本概念和用途,并理解为什么选择使用它们进行整合。 在开始整合之前,

    2024年02月14日
    浏览(35)
  • Spring-boot context.initializer.classes 配置的使用

    在Spring Boot中, context.initializer.classes 是一个属性,允许你在 application.properties 或 application.yml 配置文件中指定一个或多个实现 ApplicationContextInitializer 接口的类。这些类可以在Spring应用上下文初始化之前执行一些自定义的初始化逻辑。 以下是一个使用 context.initializer.classes 属性

    2024年04月11日
    浏览(32)
  • Spring Boot进阶(96):轻松上手:实战Spring Boot整合Docker

      Docker 是一个开源的应用程序容器化工具,它可以将应用程序和依赖组件打包到一个容器中,实现应用程序的快速部署和运行。Spring Boot 是一个快速开发应用程序的框架,使用 Spring Boot 可以快速构建各种各样的应用程序。本文将介绍如何使用 Spring Boot 整合 Docker,实现应用

    2024年02月07日
    浏览(40)
  • Spring Boot整合Spring Fox生成Swagger文档

    Springfox是一个用于在Spring应用程序中生成Swagger文档的开源库。它提供了一组注解和工具,可以将你的API代码和文档整合在一起,方便生成和展示API的Swagger文档。 使用Springfox,你可以在Spring Boot项目中集成Swagger,并通过Swagger UI查看和测试API。它提供了一些注解,如 @Api 、 @

    2024年02月08日
    浏览(32)
  • Spring Boot进阶(19):Spring Boot 整合ElasticSearch | 超级详细,建议收藏

            ElasticSearch是一款基于Lucene的开源搜索引擎,具有高效、可扩展、分布式的特点,可用于全文搜索、日志分析、数据挖掘等场景。Spring Boot作为目前最流行的微服务框架之一,也提供了对ElasticSearch的支持。本篇文章将介绍如何在Spring Boot项目中整合ElasticSearch,并展

    2024年02月06日
    浏览(29)
  • Spring Boot进阶(98):【实战经验】Spring Boot如何轻松整合Jenkins?

      Jenkins是一款流行的开源持续集成工具,通过Jenkins可以对项目进行持续集成、自动化部署等操作,提高开发效率和代码质量。Spring Boot作为一款轻量级的开发框架,具有快速构建应用、简化配置等众多优点,与Jenkins的结合可以进一步提高开发效率和项目质量。   那么,

    2024年02月06日
    浏览(43)
  • spring-boot 请求参数校验:注解 @Validated 的使用、手动校验、自定义校验

    spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。 spring-boot已经引入了基础包,所以直接使用就可以。 在属性上添加校验注解: 在Controller上添加 @Validated 注解 校验未通过时,可能看到: 在 @Validated 后面紧跟着追加BindingResult,

    2023年04月16日
    浏览(92)
  • Spring Boot进阶(97):从入门到精通:Spring Boot整合Kubernetes详细教程

      随着云计算和容器化技术的发展,Kubernetes已经成为了当今最为流行的容器编排平台之一。而Spring Boot则是Java领域中最为流行的Web应用开发框架之一。将两者结合起来,可以帮助开发者更加高效地构建、部署和管理基于Spring Boot的应用程序。   本文将介绍如何在Spring B

    2024年02月06日
    浏览(43)
  • Spring Boot进阶(77):开启Scala之门:用Spring Boot轻松整合Scala

            Scala是一种基于JVM的编程语言,它融合了面向对象编程和函数式编程的优点,同时也具有强大的类型推断能力和高阶函数等先进特性,因此在企业级应用开发中得到了广泛的应用。         Spring Boot是一个快速开发框架,它的宗旨是使Spring应用程序的开发变得更

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包