当前位置: 首页 > news >正文

Spring Boot 集成 MongoDB - 入门指南

引言

随着NoSQL数据库的流行,MongoDB 成为了许多现代Web应用程序的首选数据库之一。它提供了高性能、高可用性和易于扩展的能力。Spring Boot 框架以其开箱即用的理念简化了Java应用程序的开发过程。本文将指导您如何在Spring Boot项目中集成MongoDB,以便快速地进行数据持久化操作。

环境准备

  • Java 11 或更高版本

  • Spring Boot 2.7.x 或更高版本

  • MongoDB 服务器(至少为4.0版本)

  • 一个IDE(如 IntelliJ IDEA 或 Eclipse)

创建 Spring Boot 项目

您可以使用 Spring Initializr (https://start.spring.io/) 快速创建一个新的Spring Boot项目。选择以下依赖项:

  • Spring Web

  • Spring Data MongoDB

这将自动为您添加所需的依赖项,以便与MongoDB交互。

添加依赖项

如果您手动创建项目,需要在pom.xml文件中添加以下依赖项:

xml

深色版本

1<dependency>
2    <groupId>org.springframework.boot</groupId>
3    <artifactId>spring-boot-starter-data-mongodb</artifactId>
4</dependency>
5<dependency>
6    <groupId>org.springframework.boot</groupId>
7    <artifactId>spring-boot-starter-web</artifactId>
8</dependency>

配置 MongoDB

在application.properties文件中配置MongoDB连接。这里我们假设MongoDB运行在本地主机上,默认端口27017,数据库名为mydb:

深色版本
1spring.data.mongodb.uri=mongodb://localhost:27017/mydb

如果您需要更复杂的配置,可以使用spring.data.mongodb.*属性来配置连接详情。

定义实体类

接下来定义一个实体类,例如Person,并使用
org.springframework.data.annotation包下的注解来映射MongoDB文档。

java

深色版本

1import org.springframework.data.annotation.Id;
2import org.springframework.data.mongodb.core.mapping.Document;
3
4@Document(collection = "persons")
5public class Person {
6
7    @Id
8    private String id;
9    private String name;
10    private int age;
11
12    // Getters and Setters
13}

创建 Repository 接口

使用Spring Data MongoDB提供的CRUD接口继承方式来简化数据访问层的实现。

java

深色版本

1import org.springframework.data.mongodb.repository.MongoRepository;
2
3public interface PersonRepository extends MongoRepository<Person, String> {
4}

实现业务逻辑

创建一个简单的Service类来处理业务逻辑,并注入PersonRepository。

java

深色版本

1import org.springframework.beans.factory.annotation.Autowired;
2import org.springframework.stereotype.Service;
3
4@Service
5public class PersonService {
6
7    private final PersonRepository repository;
8
9    @Autowired
10    public PersonService(PersonRepository repository) {
11        this.repository = repository;
12    }
13
14    public Person createPerson(String name, int age) {
15        Person person = new Person();
16        person.setName(name);
17        person.setAge(age);
18        return repository.save(person);
19    }
20}

控制器层

创建一个Controller来暴露RESTful API。

java

深色版本

1import org.springframework.beans.factory.annotation.Autowired;
2import org.springframework.web.bind.annotation.*;
3
4@RestController
5@RequestMapping("/api/persons")
6public class PersonController {
7
8    private final PersonService service;
9
10    @Autowired
11    public PersonController(PersonService service) {
12        this.service = service;
13    }
14
15    @PostMapping
16    public Person create(@RequestParam String name, @RequestParam int age) {
17        return service.createPerson(name, age);
18    }
19}

测试应用

启动您的Spring Boot应用,并使用Postman或类似工具发送POST请求到
http://localhost:8080/api/persons以测试创建新记录的功能。

结语

通过上述步骤,您已经成功地在Spring Boot应用中集成了MongoDB,并实现了基本的数据持久化功能。这只是开始,您可以进一步探索Spring Data MongoDB的强大功能,如查询方法命名规则、复杂查询编写等,以满足更复杂的业务需求

相关文章:

Spring Boot 集成 MongoDB - 入门指南

引言 随着NoSQL数据库的流行&#xff0c;MongoDB 成为了许多现代Web应用程序的首选数据库之一。它提供了高性能、高可用性和易于扩展的能力。Spring Boot 框架以其开箱即用的理念简化了Java应用程序的开发过程。本文将指导您如何在Spring Boot项目中集成MongoDB&#xff0c;以…...

基于云计算的虚拟电厂负荷预测

基于云计算的虚拟电厂负荷预测 随着电网规模的扩大及新能源的不断应用&#xff0c;并网电网的安全性和经济性备受关注。 电网调度不再是单一或局部控制&#xff0c;而是采用智能网络集成方式调度 。 智能电网应具有以下特点&#xff1a;坚强自愈&#xff0c;可以抵御外来干扰甚…...

Android应用性能优化

Android手机由于其本身的后台机制和硬件特点&#xff0c;性能上一直被诟病&#xff0c;所以软件开发者对软件本身的性能优化就显得尤为重要&#xff1b;本文将对Android开发过程中性能优化的各个方面做一个回顾与总结。 Cache优化 ListView缓存&#xff1a; ListView中有一个回…...

fiddler抓包01:工具介绍

课程大纲 fiddler是一款常见的抓包工具&#xff0c;可以对web端和移动端的接口请求进行抓包&#xff08;截获&#xff09;、分析、编辑、模拟等&#xff0c;还可以导出jmeter、Loadrunner测试脚本。 1、原理 fiddler作为代理服务器&#xff0c;拦截请求和服务器响应。 2、使用…...

Spring Boot母婴商城:打造一站式购物体验

1 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样的大环境让那些止步不前&#…...

【面试八股总结】GC垃圾回收机制

垃圾回收策略&#xff08;Garbage Collection&#xff0c;GC&#xff09;用于回收不再使用的内存&#xff0c;避免系统的内存被占满。Go1.3之前采用标记清除法&#xff0c; Go1.3之后采用三色标记法&#xff0c;Go1.8采用三色标记法混合写屏障。 前置概念&#xff1a; 1&#x…...

arcgisPro修改要素XY容差

1、在arcgisPro中XY容差的默认值为1个毫米&#xff0c;及0.001米。为了更精细的数据&#xff0c;需要提高这个精度&#xff0c;如何提高呢&#xff1f; 2、如果直接在数据库下新建要素类&#xff0c;容差只能调至0.0002米。所以&#xff0c;需要在数据库下新建要素数据集。 3…...

Java 21的Enhanced Deprecation的笔记

Java Core Libraries Enhanced Deprecation 废弃API&#xff0c;一般可以理解为不推荐开发者在项目中使用的API&#xff0c;当前为了保持兼容&#xff0c;在JDK中保留&#xff0c;未来可能会删除。 作为开发者&#xff0c;使用工具jdeprscan可以方便的查找现有代码中存在的一些…...

Ubuntu下Git使用教程:从入门到实践

引言 在软件开发和版本控制领域&#xff0c;Git无疑是最为流行的工具之一。它不仅能够帮助我们高效地管理代码&#xff0c;还能促进团队协作&#xff0c;确保项目的持续集成与交付。对于使用Ubuntu操作系统的开发者而言&#xff0c;掌握Git的使用技巧尤为重要。本文将带您一步…...

【开放词汇检测】基于MMDetection的MM-Grounding-DINO实战

文章目录 摘要安装基础环境新建虚拟环境安装pytorch安装openmim、mmengine、mmcv安装 MMDetection验证安装配置OV-DINO环境 MMDetection的MM-Grounding-DINO详细介绍测试结果Zero-Shot COCO 结果与模型Zero-Shot LVIS ResultsZero-Shot ODinW&#xff08;野生环境下的目标检测&…...

PLC-Recorder 对西门子传动的采集方法

目录 一、增加西门子传动的通道 二、变量配置 2.1 语法格式 a&#xff1a;装置号 b&#xff1a;参数号 c&#xff1a;参数下标 2.2 配置及连接测试情况 三、正式采集 四、小结 PLC-Recorder V3.4.0版本增加了西门子传动参数采集的功能&#xff08;增加了传动的设备类型&a…...

【网络通信基础与实践第三讲】传输层协议概述包括UDP协议和TCP协议

一、进程间的通信 通信的两端应当是两个主机中的应用进程&#xff0c;也就是说&#xff0c;端到端的通信是应用进程之间的通信 运输层有一个很重要的功能就是复用和分用&#xff0c;复用是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据&#xff0c;分用是指接…...

centos更改静态ip

点击网络和internet设置 点击更改适配器 、点击属性...

YOLOv5/v8 + 双目相机测距

yolov5/v8双目相机测距的代码&#xff0c;需要相机标定 可以训练自己的模型并检测测距&#xff0c;都是python代码 已多次实验&#xff0c;代码无报错。 非常适合做类似的双目课题&#xff01; 相机用的是汇博视捷的双目相机&#xff0c;具体型号见下图。 用的yolov5是6.1版本的…...

双三次插值及MATLAB实现

一、双三次插值的概念 双三次插值&#xff08;Bicubic interpolation&#xff09;&#xff0c;又叫双立方插值。在数值分析这个数学分支中&#xff0c;双三次插值是二维空间中最常用的插值方法。在这种方法中&#xff0c;函数f在点 (x0 ,y0) 的值不仅考虑其直接邻接点对其的影响…...

Kubernetes 持续集成与交付(CI/CD)

Kubernetes 持续集成与交付&#xff08;CI/CD&#xff09;详解 Kubernetes 是目前主流的容器编排平台&#xff0c;而在 DevOps 的实践中&#xff0c;持续集成与持续交付&#xff08;CI/CD&#xff09;是自动化软件开发与运维的核心环节。Kubernetes 与 CI/CD 的结合&#xff0…...

【Rust练习】14.流程控制

练习题来自&#xff1a;https://practice-zh.course.rs/flow-control.html 1 // 填空 fn main() {let n 5;if n < 0 {println!("{} is negative", n);} __ n > 0 {println!("{} is positive", n);} __ {println!("{} is zero", n);} } …...

React-Hooks-Form 集成 Zod 校验库

React-Hooks-Form 集成 Zod 校验库 首先需要安装 react hooks form 官方提交的解析器 npm install hookform/resolvers再安装校验库 npm install zod它不仅支持 Zod 校验库同时还支持目前各种主流的校验库比如&#xff1a;Yup、Zod、Joi、Ajv、Vest、Custom 具体查看官方文…...

kettle从入门到精通 第八十五课 ETL之kettle kettle中javascript步骤调用外部javascript/js文件

场景&#xff1a;交流学习群里面有小伙伴咨询kettle中的javascript代码步骤如何调用外部js文件中的函数&#xff0c;觉得有点意思的&#xff0c;于是就抽时间整理了一下。 1、外部js文件为test.js&#xff0c;代码如下&#xff1a; function test(param){return "接收到了…...

比传统机器学习更先进的深度学习神经网络的二分类建模全流程教程

比传统机器学习更先进的深度学习神经网络的二分类建模全流程分析教程 深度学习介绍和与传统机器学习的区别 深度学习&#xff08;Deep Learning&#xff09;是一种机器学习的分支&#xff0c;基于多层神经网络模型&#xff0c;能够自动从大量数据中学习特征并进行预测。深度学…...

终极字体合并方案:如何一键解决游戏字体兼容性难题

终极字体合并方案&#xff1a;如何一键解决游戏字体兼容性难题 【免费下载链接】Warcraft-Font-Merger Warcraft Font Merger&#xff0c;魔兽世界字体合并/补全工具。 项目地址: https://gitcode.com/gh_mirrors/wa/Warcraft-Font-Merger 还在为游戏中文字显示不全而烦…...

ComfyUI-VideoHelperSuite全流程掌控:解锁10倍视频处理效率

ComfyUI-VideoHelperSuite全流程掌控&#xff1a;解锁10倍视频处理效率 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 构建高效视频工作流 环境部署与基础配置 …...

告别窗口切换烦恼:Mac窗口置顶神器Topit让你的多任务效率飙升300%

告别窗口切换烦恼&#xff1a;Mac窗口置顶神器Topit让你的多任务效率飙升300% 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 还在为频繁切换窗口打断工作流而烦…...

Multisim仿真NE555驱动MOS管总报错?手把手教你调整收敛参数搞定它

Multisim仿真中NE555驱动MOS管报错的深度解决方案 在电子电路仿真领域&#xff0c;Multisim作为一款功能强大的工具&#xff0c;被广泛应用于教学和工程实践中。然而&#xff0c;当涉及到非线性元件如MOSFET与NE555定时器结合使用时&#xff0c;许多工程师和学生都会遇到一个令…...

如何轻松提取和编辑Unity游戏资源:UABEA工具完整指南

如何轻松提取和编辑Unity游戏资源&#xff1a;UABEA工具完整指南 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA 你是否曾经遇到过这样的困扰&#xff1f;作为一名游戏开发者或模组制作者&#xff0c;…...

Qwen3.5-2B集成IDEA开发环境:Java多模态应用快速开发指南

Qwen3.5-2B集成IDEA开发环境&#xff1a;Java多模态应用快速开发指南 1. 为什么选择Qwen3.5-2B进行Java开发 如果你是一位Java开发者&#xff0c;想要快速为应用添加AI能力&#xff0c;Qwen3.5-2B是个不错的选择。这个轻量级多模态模型不仅支持文本理解&#xff0c;还能处理图…...

OpenClaw学术助手:千问3.5-27B自动校对论文格式与参考文献

OpenClaw学术助手&#xff1a;千问3.5-27B自动校对论文格式与参考文献 1. 为什么需要自动化论文校对工具 作为科研工作者&#xff0c;我经历过无数次论文投稿前的格式调整噩梦。记得去年投稿某核心期刊时&#xff0c;光是调整参考文献格式就花了整整两天——期刊要求APA第六版…...

OpenClaw技能开发入门:为Qwen3-14b_int4_awq定制PDF解析模块

OpenClaw技能开发入门&#xff1a;为Qwen3-14b_int4_awq定制PDF解析模块 1. 为什么需要自定义PDF解析技能 去年我在处理一批技术白皮书时&#xff0c;发现OpenClaw内置的文件处理能力对复杂PDF支持有限。当我想让AI助手自动提取PDF中的表格数据并生成摘要时&#xff0c;系统总…...

从课程设计到毕业设计:手把手教你用STC89C52和DS1302做一个带温度显示的电子钟(附完整代码)

从课程设计到毕业设计&#xff1a;STC89C52与DS1302打造高精度温度显示电子钟实战指南 1. 项目规划与硬件选型 在开始动手之前&#xff0c;我们需要对整个项目进行系统性的规划。一个完整的电子钟系统需要考虑时间显示、温度监测、用户交互和电源管理等多个功能模块。对于高校电…...

SimpleScreenRecorder多线程架构设计:如何避免死锁并提升录制性能

SimpleScreenRecorder多线程架构设计&#xff1a;如何避免死锁并提升录制性能 【免费下载链接】ssr SimpleScreenRecorder, a screen recorder for Linux 项目地址: https://gitcode.com/gh_mirrors/ss/ssr SimpleScreenRecorder作为一款Linux平台下的专业屏幕录制工具&…...