SpringBoot集成MongoDB

这篇具有很好参考价值的文章主要介绍了SpringBoot集成MongoDB。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

MongoDB是一个开源、高性能、可扩展的文档型数据库系统。与传统关系型数据库相比,MongoDB具有更高的性能和更好的可伸缩性,并且可以存储非结构化数据。

SpringBoot是一个基于Spring框架的快速开发框架,它提供了一种方便快捷的方式来构建和部署Web应用程序。SpringBoot可以集成不同种类的数据库,本文章介绍的是SpringBoot集成下的MongoDB的操作。

集成SpringBoot和MongoDB的方法如下:

  1. 添加MongoDB依赖:在pom.xml文件中添加对MongoDB的依赖。
  2. 配置MongoDB:在application.properties文件中添加MongoDB的配置信息。
  3. 创建MongoDB Repository:使用Spring Data MongoDB创建MongoDB Repository接口。
  4. 集成MongoDB:在SpringBoot主类上添加@EnableMongoRepositories注解,并将MongoDB Repository添加到SpringBoot应用程序中。

SpringBoot集成MongDB的优缺点
优点:

  1. 高性能:MongoDB使用内存映射I/O和数据预读取等技术,可以在高负载下保持高性能。
  2. 可伸缩性:MongoDB支持分片和复制集等功能,可以轻松地扩展存储和处理能力。
  3. 非结构化数据存储:MongoDB支持存储非结构化数据,可以存储复杂的文档和对象。

缺点:

  1. 内存占用:MongoDB需要在内存中存储索引和数据,因此对内存的使用较多。
  2. 数据一致性:MongoDB的数据一致性可能受到分片和复制集等因素的影响。可能出现数据冲突或数据丢失等问题。

实现

SpringBoot集成MongoDB下的操作包括:连接数据库、新增数据、查询数据、更新数据、删除数据。

  1. 创建Maven工程

在开始写代码之前,我们需要准备好一个Maven工程。新建一个Maven工程,添加以下依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
	<groupId>org.mongodb</groupId>
	<artifactId>mongo-java-driver</artifactId>
	<version>.0</version>
</dependency>
  1. 配置application.properties

在application.properties中添加以下配置信息:

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=test
spring.data.mongodb.username=
spring.data.mongodb.password=

或者用实体类配置

@Configuration
@EnableMongoRepositories(basePackages = "com.example.repository")
public class MongoConfig extends AbstractMongoClientConfiguration {

    @Value("${spring.data.mongodb.host}")
    private String host;

    @Value("${spring.data.mongodb.port}")
    private int port;

    @Value("${spring.data.mongodb.database}")
    private String database;

    @Value("${spring.data.mongodb.username}")
    private String username;

    @Value("${spring.data.mongodb.password}")
    private String password;

    @Override
    protected String getDatabaseName() {
        return database;
    }

    @Override
    public MongoClient mongoClient() {
        return MongoClients.create(ConnectionString.format("mongodb://%s:%d", host, port));
    }

    @Override
    protected boolean autoIndexCreation() {
        return true;
    }

    @Override
    @Bean
    public MongoTemplate mongoTemplate() {
        return new MongoTemplate(mongoClient(), database);
    }

}
  1. 创建实体类

在src/main/java/目录下新建一个实体类。本篇文章中的实体类为User,具体代码如下:

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

//Document注解表明对应了MongoDB中的user表。
@Document(collection = "user")
public class User {
    @Id
    private String id;
    private String name;
    private Integer age;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
  1. 新增数据
@Repository
public class UserRepository {

    @Autowired
    MongoTemplate mongoTemplate;

    @Autowired
    MongoOperations mongoOperations;

    // 可以直接将实体对象插入到指定的集合中
    @Override
    public User save(User user) {
        mongoTemplate.save(user);
        return user;
    }

    // 一次性插入多条数据
    @Override
    public void saveAll(List<User> userList) {
        mongoTemplate.insertAll(userList);
    }

}
  1. 查询数据
@Repository
public class UserRepository {

    @Autowired
    MongoTemplate mongoTemplate;

    @Autowired
    MongoOperations mongoOperations;

    // 多条件组合查询,并支持分页查询和排序查询
    @Override
    public List<User> findUser(UserQuery query) {
        Query q = query.buildQuery();
        q.with(query.buildPageable());
        q.with(query.buildSort());
        return mongoTemplate.find(q, User.class);
    }

    // 使用Query和Criteria构造查询条件,使用MongoTemplate的find方法查询符合条件的数据集合
    @Override
    public List<User> findByAge(int minAge, int maxAge) {
        Query query = new Query();
        query.addCriteria(Criteria.where("age").gte(minAge).lte(maxAge));
        return mongoTemplate.find(query, User.class);
    }

}
  1. 更新数据
@Repository
public class UserRepository {

    @Autowired
    MongoTemplate mongoTemplate;

    @Autowired
    MongoOperations mongoOperations;

    // 直接更新指定的实体对象
    @Override
    public void update(User user) {
        mongoTemplate.save(user);
    }

    // 使用Query和Update构造更新条件和更新内容
    @Override
    public void updateAge(String id, int age) {
        Query query = new Query(Criteria.where("id").is(id));
        Update update = new Update().set("age", age);
        mongoTemplate.updateFirst(query, update, User.class);
    }

}
  1. 删除数据
@Repository
public class UserRepository {

    @Autowired
    MongoTemplate mongoTemplate;

    @Autowired
    MongoOperations mongoOperations;

    // 直接删除指定的实体对象
    @Override
    public void delete(User user) {
        mongoTemplate.remove(user);
    }

    // 使用Query构造删除条件
    @Override
    public void deleteById(String id) {
        Query query = new Query(Criteria.where("id").is(id));
        mongoTemplate.remove(query, User.class);
    }

}

注:以上示例仅供参考,具体实现可能需要根据实际情况进行调整。

SpringBoot集成MongoDB下的操作包括:连接数据库、新增数据、查询数据、更新数据、删除数据。

  1. 连接数据库
    SpringBoot集成MongoDB需要引入MongoDB驱动包和Spring Data MongoDB依赖。在配置文件中指定数据库的连接信息,包括主机名、端口、数据库名称、用户名、密码等。可以通过MongoTemplate或MongoClient等方式连接数据库。
  1. 新增数据
    新增数据可以通过MongoTemplate或MongoRepository的save方法实现,直接将实体对象插入到指定的集合中。也可以使用MongoTemplate的insert方法实现一次性插入多条数据。
  1. 查询数据
    查询数据可以使用MongoTemplate或MongoRepository的find方法实现,可以进行多条件组合查询,并支持分页查询和排序查询。也可以使用Query和Criteria构造查询条件,使用MongoTemplate的find方法查询符合条件的数据集合。
  1. 更新数据
    更新数据可以使用MongoTemplate或MongoRepository的save方法实现,直接更新指定的实体对象。也可以使用update方法实现更新操作,使用Query和Update构造更新条件和更新内容。
  1. 删除数据
    删除数据可以使用MongoTemplate或MongoRepository的delete方法实现,直接删除指定的实体对象。也可以使用remove方法实现删除操作,使用Query构造删除条件。

总的来说,集成MongoDB和SpringBoot可以为Web应用程序提供高性能和可伸缩性的数据库系统。但是,在使用MongoDB时需要注意其内存占用和数据一致性等问题。文章来源地址https://www.toymoban.com/news/detail-811217.html

到了这里,关于SpringBoot集成MongoDB的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring Boot集成JPA和ClickHouse数据库

    Spring Boot是一个用于创建独立的、基于Spring的应用程序的框架。它具有快速开发特性,可以大大减少开发人员的工作量。JPA(Java Persistence API)是Java中处理关系型数据库持久化的标准规范,而ClickHouse是一个高性能、分布式的列式数据库。 本文将介绍如何在Spring Boot项目中集成

    2024年02月09日
    浏览(42)
  • spring boot集成Elasticsearch-SpringBoot(25)

      搜索引擎(search engine )通常意义上是指:根据特定策略,运用特定的爬虫程序从互联网上搜集信息,然后对信息进行处理后,为用户提供检索服务,将检索到的相关信息展示给用户的系统。   而我们讲解的是捜索的索引和检索,不涉及爬虫程序的内容爬取。大部分公司

    2023年04月09日
    浏览(94)
  • spring boot学习第六篇:SpringBoot 集成WebSocket详解

    1、WebSocket简介 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 2、为什么需要WebSocket HTTP 是基于请求响应式的,即通信只能由客户端发起,服务端做出响应,无状态,无连接。 无状态:每次连

    2024年01月21日
    浏览(38)
  • 【SpringBoot3】Spring Boot 3.0 集成 Redis 缓存

    Redis缓存是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它主要用于作为数据库、缓存和消息中间件,以快速读写和丰富的数据结构支持而著称。 在应用程序和数据库之间,Redis缓存作为一个中间层起着关键

    2024年02月21日
    浏览(40)
  • 《Spring Boot 实战派》--13.集成NoSQL数据库,实现Elasticsearch和Solr搜索引擎

             关于搜索引擎 我们很难实现 Elasticseach 和 Solr两大搜索框架的效果;所以本章针对两大搜索框架,非常详细地讲解 它们的原理和具体使用方法, 首先 介绍什么是搜索引擎 、如何用 MySQL实现简单的搜索引擎,以及Elasticseach 的 概念和接口类; 然后介绍Elasticseach

    2023年04月09日
    浏览(77)
  • 【Spring Boot】SpringBoot和数据库交互: 使用Spring Data JPA

    在现代应用程序的开发中,数据是核心部分。为了能够持久化、检索、更新和删除数据,应用程序需要与数据库进行交互。 1.1 为什么需要数据库交互 数据持久化 :当你关闭应用程序或者服务器时,你仍希望数据能够保存。数据库提供了一个持久的存储方案,使得数据在关闭

    2024年02月12日
    浏览(35)
  • Spring Boot进阶(48):【实战教程】SpringBoot集成WebSocket轻松实现实时消息推送

            WebSocket是一种新型的通信协议,它可以在客户端与服务器端之间实现双向通信,具有低延迟、高效性等特点,适用于实时通信场景。在SpringBoot应用中,集成WebSocket可以方便地实现实时通信功能,如即时聊天、实时数据传输等。         本文将介绍如何在Sprin

    2024年02月09日
    浏览(38)
  • spring boot +springboot集成es7.9.1+canal同步到es

    未经许可,请勿转载。 其实大部分的代码是来源于 参考资料来源 的 主要代码实现 ,我只是在他的基础上增加自定义注解,自定义分词器等。需要看详细源码的可以去看 主要代码实现 ,结合我的来使用。 有人会问为什么需要自定义注解,因为elasticsearch7.6 索引将去除type 没

    2023年04月11日
    浏览(73)
  • Spring Boot进阶(48):SpringBoot之集成WebSocket及使用说明 | 超级详细,建议收藏

            WebSocket是一种新型的通信协议,它可以在客户端与服务器端之间实现双向通信,具有低延迟、高效性等特点,适用于实时通信场景。在SpringBoot应用中,集成WebSocket可以方便地实现实时通信功能,如即时聊天、实时数据传输等。         本文将介绍如何在Sprin

    2024年02月16日
    浏览(39)
  • Spring Boot进阶(49):SpringBoot之集成WebSocket实现前后端通信 | 超级详细,建议收藏

            在上一期,我对WebSocket进行了基础及理论知识普及学习,WebSocket是一种基于TCP协议实现的全双工通信协议,使用它可以实现实时通信,不必担心HTTP协议的短连接问题。Spring Boot作为一款微服务框架,也提供了轻量级的WebSocket集成支持,本文将介绍如何在Spring Boot项

    2024年02月14日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包