【Java系列】SpringBoot 集成MongoDB 详细介绍

目录

写在前面

一、步骤介绍

步骤 1: 添加 MongoDB 依赖

步骤 2: 配置 MongoDB 连接信息

步骤 3: 创建实体类

步骤 4: 创建 Repository 接口

步骤 5: 使用 Repository 进行操作

二、特殊处理


写在前面

在Spring Boot中集成MongoDB的过程相对简单,以下是一个基本的步骤指南。确保项目已经使用了Spring Boot,并且你已经在项目中添加了MongoDB的依赖。

一、步骤介绍

步骤 1: 添加 MongoDB 依赖

在 pom.xml 文件中,添加 MongoDB 的依赖。可以在 Maven 或 Gradle 中选择一种方式。

<dependencies><!-- 其他依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>
</dependencies>
dependencies {// 其他依赖implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
}

步骤 2: 配置 MongoDB 连接信息

application.propertiesapplication.yml 中添加 MongoDB 连接信息:

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydatabase

yml格式:

spring:data:mongodb:host: localhostport: 27017database: mydatabase

步骤 3: 创建实体类

创建一个简单的实体类,用于映射到 MongoDB 中的文档。例如:

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;@Document(collection = "users")
public class User {@Idprivate String id;private String username;private String email;// 省略构造函数、getter和setter等
}

步骤 4: 创建 Repository 接口

创建一个继承自 MongoRepository 的接口,用于对 MongoDB 中的文档进行操作。例如:

import org.springframework.data.mongodb.repository.MongoRepository;public interface UserRepository extends MongoRepository<User, String> {// 可以在这里定义一些自定义的查询方法
}

步骤 5: 使用 Repository 进行操作

在服务层或控制器中注入 UserRepository,然后可以使用该接口提供的方法来进行数据库操作。例如:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserService {private final UserRepository userRepository;@Autowiredpublic UserService(UserRepository userRepository) {this.userRepository = userRepository;}public void saveUser(User user) {userRepository.save(user);}public User getUserById(String id) {return userRepository.findById(id).orElse(null);}// 其他操作...
}

以上步骤涵盖了基本的集成。可以根据项目的需要进行更复杂的配置和操作,例如定义索引、复杂查询等。

二、特殊处理

在使用spring-boot-starter-data-mongodb时,不需要显式指定spring-data-mongodb的版本,Spring Boot会确保它们兼容并自动管理版本冲突。

如果你正在使用一个不是最新的Spring Boot版本,你可能需要查看相应版本的文档或POM文件,以确保你使用的spring-boot-starter-data-mongodb版本与spring-data-mongodb版本兼容。

 

但是,有时候需要单独指定MongoDB的版本,你可以在pom.xml文件中添加相应的依赖项,并指定版本号。以下是一个示例:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId><version>2.7.0</version> <!-- 请根据你需要的版本进行替换 -->
</dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId><version>3.4.1</version> <!-- 请根据你需要的版本进行替换 -->
</dependency>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/156832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构探索之路-第一站-clickhouse | 京东云技术团队

一、前言 架构, 软件开发中最熟悉不过的名词, 遍布在我们的日常开发工作中, 大到项目整体, 小到功能组件, 想要实现高性能、高扩展、高可用的目标都需要优秀架构理念辅助. 所以本人尝试编写架构系列文章, 去剖析市面上那些经典优秀的开源项目, 学习优秀的架构理念来积累架构设…

在html和css中的引用svg(一)

问题&#xff1a;如何让 DIV 中的svg垂直居中&#xff1f; HTML 代码&#xff1a; <div class"content"><svg ...> ... </svg></div> CSS代码&#xff1a; .content svg { vertical-align: middle;} 实用扩展&#xff1a;如何让 DIV 中…

Spring整合其他组件

外部命名空间标签的执行流程&#xff0c;如下&#xff1a; 将自定义标签的约束与物理约束文件与网络约束名称的约束&#xff0c;以键值对形式存储到一个spring.schemas文件中&#xff0c;该文件存储在类加载路径的META-INF里&#xff0c;Spring会自动加载到 将自定义命名空间的…

极致性能优化之道之消除伪共享

“不积跬步&#xff0c;无以至千里。” 引言 在并发编程中&#xff0c;伪共享&#xff08;False Sharing&#xff09;是一种性能问题&#xff0c;特别是在多核处理器上。这个问题通常出现在多个线程同时修改彼此不同但共享同一缓存行的数据。为了解决伪共享问题&#xff0c;我…

Redis-五种数据类型

Redis基本特性 a) 非关系型的键值对数据库&#xff0c;可以根据键以O(1) 的时间复杂度取出或插入关联值 b) Redis 的数据是存在内存中的 c) 键值对中键的类型可以是字符串&#xff0c;整型&#xff0c;浮点型等&#xff0c;且键是唯一的 d) 键值对中的值类型可以是string&a…

「torch.cosine_smilarity() = 0」引发的关于cpu与gpu精度问题的探讨

前言&#xff1a;2023年11月21日下午16:00 许&#xff0c;本篇博客记录由「torch.cosine_smilarity()计算余弦相似度计算结果为0」现象引发的关于 CPU 与 GPU 计算精度的探索。 事情的起因是&#xff0c;本人在使用 torch.cosine_smilarity() 函数计算GPU上两个特征的余弦相似度…

【迅搜02】究竟什么是搜索引擎?正式介绍XunSearch

究竟什么是搜索引擎&#xff1f;正式介绍XunSearch 啥&#xff1f;还要单独讲一下啥是搜索引擎&#xff1f;不就是百度、Google嘛&#xff0c;这玩意天天用&#xff0c;还轮的到你来说&#xff1f; 额&#xff0c;好吧&#xff0c;虽然大家天天都在用&#xff0c;但是我发现&am…

移远通信推出六款新型天线,为物联网客户带来更丰富的产品选择

近日&#xff0c;移远通信重磅推出六款新型天线&#xff0c;覆盖5G、非地面网络&#xff08;NTN&#xff09;等多种新技术&#xff0c;将为物联网终端等产品带来全新功能和更强大的连接性能。 移远通信COO张栋表示&#xff1a;“当前&#xff0c;物联网应用除了需要高性能的天线…

【libGDX】使用Mesh绘制三角形

1 Mesh 和 ShaderProgram 简介 1.1 创建 Mesh 1&#xff09;Mesh 的构造方法 public Mesh(boolean isStatic, int maxVertices, int maxIndices, VertexAttribute... attributes) public Mesh(boolean isStatic, int maxVertices, int maxIndices, VertexAttributes attribut…

js ::after简单实战

::after的作用是在元素后面再加个XXX样式 工作中遇到了一个表格&#xff0c;鼠标指到单元格要有个整行编辑态的效果&#xff0c;下面写个简单的demo 有人可能会说了&#xff0c;直接修改某个单元格的hover样式不就行了嘛&#xff0c;问题是如果鼠标指到单元格和单元格直接的…

Android DatePicker(日期选择器)、TimePicker(时间选择器)、CalendarView(日历视图)- 简单应用

示意图&#xff1a; layout布局文件&#xff1a;xml <?xml version"1.0" encoding"utf-8"?> <ScrollView xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"…

实验过程中的问题记录

代码&#xff1a; if args.local_rank in [-1, 0] and eval_dataset is not None and args.eval_steps > 0 and global_step % args.eval_steps 0 :metric_cur eval_fn(args, eval_dataset, model, tokenizer, global_stepglobal_step, file_prefix"eval_")当参…

IP-guard Web系统远程命令执行漏洞说明

一、漏洞说明 近期收到反馈,IP-guard Web服务器存在远程命令执行漏洞(RCE),经过分析,确认是因为Web系统的申请审批功能使用了开源插件 flexpaper 实现文件在线预览功能,此插件存在远程代码执行漏洞。 攻击者可利用 flexpaper插件漏洞,在文件预览参数中拼接其它恶意命令…

时序预测 | Pytorch实现TCN-Transformer的时间序列预测

时序预测 | Pytorch实现TCN-Transformer的时间序列预测 目录 时序预测 | Pytorch实现TCN-Transformer的时间序列预测效果一览基本介绍程序设计 效果一览 基本介绍 基于TCN-Transformer模型的时间序列预测&#xff0c;可以用于做光伏发电功率预测&#xff0c;风速预测&#xff0…

管理体系标准

管理体系标准 什么是管理体系&#xff1f; 管理体系是组织管理其业务的相互关联部分以实现其目标的方式。这些目标可能涉及许多不同的主题&#xff0c;包括产品或服务质量、运营效率、环境绩效、工作场所的健康和安全等等。 系统的复杂程度取决于每个组织的具体情况。对于某…

Vue2+Vue3

文章目录 第 1 章&#xff1a;Vue 核心1、 Vue 简介1.官网2.介绍与描述3. Vue 的特点4. 与其它 JS 框架的关联5. Vue 周边库 2、初始Vue3、模板语法1、Vue模板语法有2大类:2、插值语法和指令语法 4、数据绑定1. 单向数据绑定2. 双向数据绑定 5、el与data的两种写法1.e1有2种写法…

社会媒体营销提问常用的ChatGPT通用提示词模板

如何制定有效的社会媒体营销策略&#xff1f; 如何选择适合的社会媒体平台进行营销&#xff1f; 如何创造有吸引力的社会媒体内容&#xff0c;提高用户参与度和分享率&#xff1f; 如何运用社交媒体广告来增加品牌曝光和用户转化&#xff1f; 如何建立和维护社交媒体账号和…

外部 prometheus监控k8s集群资源

prometheus监控k8s集群资源 一&#xff0c;通过CADvisior 监控pod的资源状态1.1 授权外边用户可以访问prometheus接口。1.2 获取token保存1.3 配置prometheus.yml 启动并查看状态1.4 Grafana 导入仪表盘 二&#xff0c;通过kube-state-metrics 监控k8s资源状态2.1 部署 kube-st…

【科技素养】蓝桥杯STEMA 科技素养组模拟练习试卷01

单选题 1、生活中&#xff0c;我们经常说“有机蔬菜”相比普通蔬菜更加健康&#xff0c;这是因为 A、它们没有使用无机肥料 B、它们是有机的 C、它们没有使用肥料 D、人们对蔬菜的错误认知 答案&#xff1a;A 2、甲乙两位工人一起在工厂工作。甲的生产速度是每小时6个鼠标…

网络运维与网络安全 学习笔记2023.11.21

网络运维与网络安全 学习笔记 第二十二天 今日目标 端口隔离原理与配置、路由原理和配置、配置多路由器静态路由 配置默认路由、VLAN间通信之路由器 端口隔离原理与配置 端口隔离概述 实现报文之间的2层隔离&#xff0c;除了使用VLAN技术以后&#xff0c;还可以使用端口隔…