SpringBoot集成Mongodb实现增删改查操作

news2024/12/23 9:19:12

目录

一、Mongodb概念

二、SpingBoot集成Mongodb

三、实现增删改查操作


一、Mongodb概念

MongoDB是一个开源的文档型数据库,属于NoSQL数据库中的一种。它使用BSON(类似于JSON)格式存储数据,具有高性能、高可用性和易于扩展的特点。MongoDB的主要特点包括:

  1. 面向文档:MongoDB存储的是BSON格式的数据,这是一种类似JSON的二进制格式,可以存储复杂的数据结构,如数组和嵌套文档。

  2. 分布式:MongoDB支持水平扩展,可以通过分片技术将数据分布在多个服务器上,实现高可用性和负载均衡。

  3. 高性能:MongoDB提供了丰富的索引类型,支持快速查询和更新操作。此外,它还支持多种查询优化策略,如投影、排序等。

  4. 灵活的数据模型:MongoDB允许用户在运行时修改数据结构,无需进行复杂的表结构变更。

  5. 高可用性:MongoDB支持自动故障转移和数据冗余,可以在主节点故障时自动切换到备用节点,确保数据的持久性和一致性。

  6. 支持多种编程语言:MongoDB提供了多种编程语言的驱动程序和库,如Java、Python、C#等,方便开发者进行集成和使用。

二、SpingBoot集成Mongodb

打开命令行可以看到版本,也可以输入命令:db.version()来查看版本

 pom配置

		<dependency>
		    <groupId>org.mongodb</groupId>
		    <artifactId>mongo-java-driver</artifactId>
		    <version>3.12.8</version>
		</dependency>

配置application.properties

spring.data.mongodb.uri=mongodb://localhost:27017/dataBaseName

这里参数dataBaseName需要改成你自己要连接的库名

三、实现增删改查操作

以这张数据表为例子

1.创建实体类

package com.kero99.pojo;

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

import com.alibaba.fastjson.annotation.JSONField;

@Document(collection = "测试集合")
public class TestCollection {
	
		@Id
	    @Field("id")
	    private String id;

	    @Field("testName")
	    private String testName;
	    
	    @Field("testAge")
	    private Integer testAge;

	    @Field("updateTime")
	    private String updateTime;

		public String getId() {
			return id;
		}

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

		public String getTestName() {
			return testName;
		}

		public void setTestName(String testName) {
			this.testName = testName;
		}

		public Integer getTestAge() {
			return testAge;
		}

		public void setTestAge(Integer testAge) {
			this.testAge = testAge;
		}

		public String getUpdateTime() {
			return updateTime;
		}

		public void setUpdateTime(String updateTime) {
			this.updateTime = updateTime;
		}

	    
		
	    
}

2.实现增删改查mongdb操作

MgdbController实现

package com.kero99.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.kero99.pojo.JSONResult;
import com.kero99.service.MgdbDataProcessService;

@RestController
public class MgdbController {

	@Autowired
	private MgdbDataProcessService mgdbDataProcessService;
	
	@RequestMapping("/queryTest")
	public JSONResult queryTest() {
		JSONResult result=mgdbDataProcessService.queryTest();
		return result;
	}
	@RequestMapping("/queryAllTest")
	public JSONResult queryAllTest() {
		JSONResult result=mgdbDataProcessService.queryAllTest();
		return result;
	}
	@RequestMapping("/addTest")
	public JSONResult addTest() {
		JSONResult result=mgdbDataProcessService.addTest();
		return result;
	}
	@RequestMapping("/editTest")
	public JSONResult editTest() {
		JSONResult result=mgdbDataProcessService.editTest();
		return result;
	}
	
	@RequestMapping("/removeTest")
	public JSONResult removeTest() {
		JSONResult result=mgdbDataProcessService.removeTest();
		return result;
	}
}

ServiceImpl实现

package com.kero99.service.impl;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.kero99.pojo.JSONResult;
import com.kero99.pojo.TestCollection;
import com.kero99.pojo.UserInfo;
import com.kero99.service.MgdbDataProcessService;
import com.kero99.utils.DateUtils;
import com.kero99.utils.UUIDUtil;
@Service
public class MgdbDataProcessImpl  implements MgdbDataProcessService{
	
	@Autowired
    private MongoTemplate mongoTemplate;
	@Override
	public JSONResult queryTest() {
	  Query query = new Query();
	  query.addCriteria(Criteria.where("testName").is("111"));
	  List<TestCollection> userInfo = mongoTemplate.find(query, TestCollection.class,"测试集合");
	  return JSONResult.ok(userInfo);
	}
	@Override
	public JSONResult addTest() {
		TestCollection testCollection=new TestCollection();
		testCollection.setId(UUIDUtil.generateUUID());
		testCollection.setTestName("111");
		testCollection.setTestAge(22222);
		testCollection.setUpdateTime(DateUtils.dateToString(new Date()));
        String jsonString = JSONObject.toJSONString(testCollection);
        mongoTemplate.insert(jsonString,"测试集合");
		return JSONResult.ok("插入成功");
	}
	@Override
	public JSONResult editTest() {
		 Query query = new Query();
	        query.addCriteria(Criteria.where("_id").is("670f83635f62f209a8335335"));
	        Update update = new Update();
	        update.set("testName", "555");
	        mongoTemplate.updateMulti(query, update, "测试集合");
			return JSONResult.ok("修改成功");
	}
	@Override
	public JSONResult removeTest() {
		 Query query = new Query();
	        query.addCriteria(Criteria.where("_id").is("670f83635f62f209a8335335"));
	        mongoTemplate.remove(query,"测试集合");
			return JSONResult.ok("删除成功");
	}
	@Override
	public JSONResult queryAllTest() {
       List<TestCollection> result = mongoTemplate.findAll(TestCollection.class, "测试集合");
       return JSONResult.ok(result);
	}
	
}

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

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

相关文章

QT--文本框 QLineEdit、qtextedit

在Qt中&#xff0c;文本框&#xff08;QLineEdit 或 QTextEdit&#xff09;和标签&#xff08;QLabel&#xff09;是两种不同的部件&#xff08;widget&#xff09;&#xff0c;它们的主要区别在于用途和功能&#xff1a; QLabel&#xff08;标签&#xff09; 用途&#xff1…

JVM(HotSpot):直接内存及其使用建议

文章目录 一、什么是直接内存&#xff1f;二、特点三、使用案例四、直接内存的管理 一、什么是直接内存&#xff1f; Direct Memory&#xff1a;系统内存 普通IO&#xff0c;运行原理图 磁盘到系统内存&#xff0c;系统内存到jvm内存。 NIO&#xff0c;运行原理图 划分了一块…

『Mysql集群』Mysql高可用集群之主从复制 (一)

Mysql主从复制模式 主从复制有一主一从、主主复制、一主多从、多主一从等多种模式. 我们可以根据它们的优缺点选择适合自身企业情况的主从复制模式进行搭建 . 一主一从 主主复制 (互为主从模式): 实现Mysql多活部署 一主多从: 提高整个集群的读能力 多主一从: 提高整个集群的…

等级保护测评师练习卷31

等级保护初级测评师试题31 姓名&#xff1a; 成绩&#xff1a; 一、判断题&#xff08;10110分&#xff09; 1.等级测评采用基本方法是访谈、测试、验证&#xff08;&#xff09;访谈、核查、测试 2.等级保护对象是由…

HarmonyOS 应用级状态管理(LocalStorage、AppStorage、PersistentStorage)

HarmonyOS 应用级状态管理 1. LocalStorage&#xff1a;页面级UI状态存储 1.1 概念 LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility内&#xff0c;页面间共享状态。 应用程…

【Linux】Linux下的Makefile基本操作

1.Makefile与 make介绍 在Linux中&#xff0c; Makefile 是⼀个⽂件&#xff0c; 令会在当前⽬录下找 make 是⼀个指令&#xff0c;当使⽤ Makefile ⽂件从⽽执⾏内部的内容 2.创建第一个 Makefile并使用make ⾸先&#xff0c;在当前⽬录下创建⼀个makefile文件 接下来在同级…

动态规划一>珠宝的最高价值

1.题目&#xff1a; 2.解析&#xff1a; 代码&#xff1a; /**1.创建dp表2.初始化3.填表4.返回*/public int jewelleryValue(int[][] frame) {int m frame.length, n frame[0].length;int[][] dp new int[m1][n1];//虚拟节点的值直接为0满足条件&#xff0c;已经初始化好…

字典树 计数问题(含 2022 icpc杭州 K)

//最近学了字典树&#xff0c;补一下 1.概念和实现 首先&#xff0c;字典树是一棵树&#xff08;废话&#xff09;&#xff0c;边表示字母&#xff0c;从根到叶子节点所有边的顺序组合表示字目排列顺序。 看一下图明白很多&#xff1a; 例如&#xff1a;abc这个字母排序&am…

MybatisWebApp

如何构建一个有关Mybatis的Web&#xff1f; 在这里给出我自己的一些配置。我的TomCat版本&#xff1a;10.1.28 &#xff0c;IDEA版本&#xff1a;2024.1.4 Pom.XML文件 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/200…

Linux platform子系统和设备树

1 Linux platform子系统 在Linux 2.6内核中&#xff0c;提出了总线、设备、驱动的架构&#xff0c;目的是让我们写出来的驱动通用性更强。 arm核内部总线结构&#xff1a; 1.1 核心思想 将设备的信息从驱动中分离出来&#xff0c;我们需要在操作系统中&#xff0c;添加设备…

【H2O2|全栈】JS入门知识(二)

目录 JS 前言 准备工作 运算符 算数运算符 比较运算符 自增、自减运算符 逻辑运算符 运算符的优先级 分支语句 if-else语句 switch语句 三元表达式 结束语 JS 前言 本系列博客主要分享JavaScript的基础语法知识&#xff0c;本期为第二期&#xff0c;包含一些简…

平时使用Xshell能连接虚拟机,现在突然连接不上

问题&#xff1a;平时使用Xshell能连接虚拟机&#xff0c;现在突然连接不上&#xff0c;使用ip addr 命令查看ip地址 ens33 接口状态为 DOWN&#xff0c;没有分配IP地址&#xff0c;这通常意味着该网络接口未激活或存在配置问题。&#xff08;因为平时能连接&#xff0c;就说明…

mysql 09 独立表空间结构

表空间中的页实在是太多了&#xff0c;为了更好的管理这些页面&#xff0c;设计 InnoDB 的大叔们提出了 区 &#xff08;英文名&#xff1a; extent &#xff09;的概念。对于16KB的页来说&#xff0c;连续的64个页就是一个 区 &#xff0c;也就是说一个区默认占用1MB空间大小。…

农作物苹果叶片病虫害识别数据集

农作物苹果叶片病虫害识别数据集 一、引言 农作物病虫害是影响农业生产的重要因素之一&#xff0c;其中苹果作为广泛种植的水果品种&#xff0c;其叶片病虫害问题尤为突出。为了有效应对苹果叶片病虫害&#xff0c;提高苹果产量和品质&#xff0c;农业科研机构和学者不断开展…

2024软考网络工程师笔记 - 第4章.局域网和城域网

文章目录 局域网基础1️⃣局域网和城域网体系架构 IEEE&#xff08;负责链路层&#xff09;2️⃣局域网拓扑结构 &#x1f551;CSMA/CD1️⃣CSMA/CD2️⃣CSMA/CD三种监听算法3️⃣冲突检测原理 &#x1f552;二进制指数退避算法1️⃣ 二进制指数退避算法 &#x1f553;最小帧长…

你的抠图最快速度是多久?

前言 在图像处理的过程中&#xff0c;抠图速度和质量往往是大家非常关注的问题。那么&#xff0c;你的抠图最快速度是多久呢&#xff1f;今天我要给大家分享一个我用过的极为方便的抠图工具 —— 千鹿 AI。 只需要简单地上传图片&#xff0c;几秒钟后&#xff0c;就能得到一张…

【超详细】TCP协议

TCP(Transmission Control Protocol 传输控制协议) 传输层协议有连接可靠传输面向字节流 为什么TCP是传输控制协议呢&#xff1f; 我们以前所看到的write接口&#xff0c;都是把用户级缓冲区的数据拷贝到发送缓冲区中&#xff0c;然后数据就由TCP自主决定了&#xff0c;所以…

29.第二阶段x86游戏实战2-遍历周围-花指令与二叉树数据结构(有如何阅读vm代码混淆代码)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

到底是微服务,还是SOA?

引言&#xff1a;大概正式工作有5年了&#xff0c;换了三个大厂【也是真特么世道艰难&#xff0c;中国互联网人才饱和了】。基本上每个公司有的架构都不太相同&#xff0c;干过TOC和TOB的业务&#xff0c;但是大家用的架构都不太相同。有坚持ALL in one的SB&#xff0c;最后服务…

windows下安装、配置neo4j并服务化启动

第一步&#xff1a;下载Neo4j压缩包 官网下载地址&#xff1a;https://neo4j.com/download-center/ &#xff08;官网下载真的非常慢&#xff0c;而且会自己中断&#xff0c;建议从以下链接下载&#xff09; 百度网盘下载地址&#xff1a;链接&#xff1a;https://pan.baid…