MongoDB之整合SpringBoot

MongoTemplate 方式

依赖

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

创建账户

# 切换到数据库
use study
# 创建账户
db.createUser({user:"root",pwd:"123456",roles:[{role:"dbOwner",db:"study"}]})

配置文件

spring.data.mongodb.host=192.168.204.156
spring.data.mongodb.port=27017
spring.data.mongodb.database=study
spring.data.mongodb.password=123456
spring.data.mongodb.username=root

测试

@SpringBootTest(classes = {SpringbootMongodbDemoApplication.class})
public class Main {@Autowiredprivate MongoTemplate mongoTemplate;@Testpublic void testAddData() {// 添加Goods goods = Goods.builder().qty(100).item("hello").status("B").size(new Size(165.0F, 53.4F, "cm")).build();mongoTemplate.save(goods, "goods");// 查询List<Goods> list = mongoTemplate.findAll(Goods.class);list.forEach(item -> System.out.println(item.toString()));}}@Data
@Builder
public class Goods {private String id;private String item;private Integer qty;private Size size;private String status;}@Data
@NoArgsConstructor
@AllArgsConstructor
public class Size {private Float h;private Float w;private String uom;}

增删改查

import com.example.springbootmongodbdemo.SpringbootMongodbDemoApplication;
import com.example.springbootmongodbdemo.model.Goods;
import com.example.springbootmongodbdemo.model.Size;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;import java.util.List;import static org.springframework.data.mongodb.core.query.Criteria.where;@SpringBootTest(classes = {SpringbootMongodbDemoApplication.class})
public class Main {@Autowiredprivate MongoTemplate mongoTemplate;@Testpublic void addData() {Goods build = Goods.builder().qty(100).item("hello").status("B").size(new Size(165.0F, 53.4F, "cm")).build();mongoTemplate.save(build, "goods");}@Testpublic void findAll() {List<Goods> all = mongoTemplate.findAll(Goods.class);all.forEach(item -> System.out.println(item.toString()));}@Testpublic void findById() {Goods build = Goods.builder().id("63bbdac2fa9405a15160f476").build();Query query = new Query(where("id").is(build.getId()));List<Goods> goods = mongoTemplate.find(query, Goods.class);System.out.println(goods.toString());}@Testpublic void findBy() {// 匹配r结尾的数据Query query = new Query(where("item").regex("^.*r$"));List<Goods> goods = mongoTemplate.find(query, Goods.class);System.out.println(goods.toString());}@Testpublic void update() {Goods build = Goods.builder().id("63bbdac2fa9405a15160f476").build();Query query = new Query(where("id").is(build.getId()));Update update = Update.update("item", "canvas02");UpdateResult updateResult = mongoTemplate.updateMulti(query, update, Goods.class);System.out.println(updateResult);}@Testpublic void del() {Goods build = Goods.builder().id("63d0eff1d20d7f153665244d").build();Query query = new Query(where("id").is(build.getId()));DeleteResult remove = mongoTemplate.remove(query, Goods.class);System.out.println(remove);}
}

MongoRepository 方式

依赖&配置

同上。

实体类

// 关键注解:@Document,@Id
@Data
@Builder
@Document("goods")
public class Goods {@Idprivate String id;private String item;private Integer qty;private Size size;private String status;}

接口类

public interface GoodsRepository extends MongoRepository<Goods, String> {
}

测试

@SpringBootTest(classes = {SpringbootMongodbDemoApplication.class})
public class Main {@Resourceprivate GoodsRepository goodsRepository;@Testpublic void testAddData() {Goods build = Goods.builder().qty(100).item("hello").status("B").size(new Size(165.0F, 53.4F, "cm")).build();Goods save = goodsRepository.save(build);System.out.println(save);}
}

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

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

相关文章

深度解析Oladance、韶音、南卡开放式耳机:选购指南与天花板级推荐

​随着开放式耳机在日常生活中越来越受欢迎&#xff0c;许多品牌纷纷降低材料品质以迎合大众需求&#xff0c;导致耳机的性能和音质严重下滑。这让消费者在选择优质开放式耳机时感到困惑。作为一名专业的耳机评测人员&#xff0c;我近期对多款热门开放式耳机进行了深入的测评&a…

Leetcode—92.反转链表II【中等】

2023每日刷题&#xff08;八十一&#xff09; Leetcode—92.反转链表II 算法思想 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), n…

kubernetes Pod 异常排查步骤

kubernetes Pod 异常排查步骤 详细排查图查看容器状态查看容器列表容器未启动成功排查容器启动成功排查pod状态对应原因 详细排查图 查看容器状态 查看容器列表 查看容器列表,最好在后面跟上命名空间,不跟上查询出来是默认的 kubectl get pods -n kubesphere-system单独查看某…

【Spring 篇】深入探讨MyBatis映射文件中的动态SQL

MyBatis&#xff0c;这个名字在Java开发者的世界中犹如一道光芒&#xff0c;照亮着持久层操作的道路。而在MyBatis的映射文件中&#xff0c;动态SQL则是一个让人爱-hate的存在。有时候&#xff0c;你感叹它的灵活性&#xff0c;有时候&#xff0c;你可能会为它的繁琐而头痛。但…

【Linux 内核源码分析】内存屏障

内存屏障 内存屏障的作用是强制对内存的访问顺序进行排序&#xff0c;保证多线程或多核处理器下的内存访问的一致性和可见性。通过插入内存屏障&#xff0c;可以防止编译器对代码进行过度优化&#xff0c;也可以解决CPU乱序执行引起的问题&#xff0c;确保程序的执行顺序符合预…

windows 11安装VMware 17 ,VMware安装Ubuntu 20.4

一、下载安装激活VMware 17 下载与激活&#xff1a;Vmware 17 下载地址、最新激活码 2024 _ 注意&#xff1a;安装路径自己选择&#xff0c;路径中尽可能避免中文或空格 二、下载Ubuntu 镜像 下载镜像地址&#xff1a;清华大学开源软件镜像站 点开下载镜像地址&#xff0c;找…

中科星图——Sentinel-2_MSI_L2A数据集

数据名称&#xff1a; Sentinel-2_MSI_L2A 数据来源&#xff1a; Copernicus 时空范围&#xff1a; 2022年10月-2023年1月 空间范围&#xff1a; 全国 数据简介&#xff1a; 哨兵2号&#xff08;Sentinel-2&#xff09;卫星是高分辨率多光谱成像卫星&#xff0c;携带一…

144 两两交换链表中的节点

问题描述&#xff1a;给定一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后的链表。例如[1,2,3,4]变为[2,1,4,3] public ListNode changeNode(ListNode root) { ListNode prenull; ListNode firstChangeroot; ListNode secondChangeroot.next; ListNode r…

腾讯云香港云主机cn2网路线路说明

腾讯云香港轻量线路国际中国电信cn2高速网络。腾讯云轻量服务器电信移动联通三网测速&#xff08;腾讯云中国大陆地域是多线BGP高速线路&#xff0c;所以访问速度不用担心&#xff09;&#xff0c;如果是香港地域的轻量服务器&#xff0c;国内访问会不会绕路呢&#xff1f;阿腾…

负载均衡学习

事情的起因是&#xff0c;服务挂了。。。 发现有个大佬在排查问题的时候用了slb心跳检测 SLB&#xff08;Server Load Balancer&#xff09;的心跳是指SLB服务与后端服务器之间的通信机制。通过心跳机制&#xff0c;SLB可以检测后端服务器的状态&#xff0c;包括是否正常运行、…

51单片机实验课一

实验任务一&#xff1a;实现控制8个发光管的亮&#xff08;灭&#xff09; #include <REGX52.H> void Delay1ms(unsigned int xms) //11.0592MHz {unsigned char i, j;while(xms){xms--;i 12;j 169;do{while (--j);} while (--i);} } void main() {while(1){P20;//八…

分布式一致性算法---Raft初探

读Raft论文也有一段时间了&#xff0c;但是自己总是以目前并没有完全掌握为由拖着这篇博客。今天先以目前的理解程度&#xff08;做了6.824的lab2A和lab2B&#xff09;对这篇论文做一个初步总结&#xff0c;之后有了更深入的理解之后再进行迭代&#xff0c;关于本文有任何疑问欢…

苹果眼镜(Vision Pro)的开发者指南(3)-【3D UI SwiftUI和RealityKit】介绍

为了更深入地理解SwiftUI和RealityKit,建议你参加专注于SwiftUI场景类型的系列会议。这些会议将帮助你掌握如何在窗口、卷和空间中构建出色的用户界面。同时,了解Model 3D API将为你提供更多关于如何为应用添加深度和维度的知识。此外,通过学习RealityView渲染3D内容,你将能…

anaconda环境迁移到另一个服务器

两个服务器上的显卡和cuda的安装都是相同的 利用conda pack迁移环境 &#xff08;本来打算直接复制-粘贴来迁移环境的&#xff0c;但是anaconda文件夹直接有80多G&#xff0c;遂放弃&#xff08;没想到环境竟然可以有这么大的内存&#xff09;。&#xff09; 1.在某一个conda…

【Java数据结构 -- 队列:队列有关面试oj算法题】

队列、循环队列、用队列模拟栈、用栈模拟队列 1.队列1.1 什么是队列1.2 创建队列1.3 队列是否为空和获取队头元素 empty()peek()1.4 入队offer()1.5 出队&#xff08;头删&#xff09;poll() 2. 循环队列2.1 创建循环队列2.2 判断是否为空isEmpty()和满isFull()2.3 入队enQueue…

JAVA的面试题四

1.电商行业特点 &#xff08;1&#xff09;分布式&#xff1a; ①垂直拆分:根据功能模块进行拆分 ②水平拆分:根据业务层级进行拆分 &#xff08;2&#xff09;高并发&#xff1a; 用户单位时间内访问服务器数量,是电商行业中面临的主要问题 &#xff08;3&#xff09;集群&…

python数据分析——numpy基本用法

numpy数据类型 在NumPy中&#xff0c;有多种数据类型可用于表示数组的元素。以下是一些常见的NumPy数据类型&#xff1a; int - 整数类型&#xff0c;如int8、int16、int32、int64等。uint -无符号整数类型&#xff0c;如uint8、uint16、uint32、uint64等。float -浮点数类型…

PaddleNLP 如何打包成Windows环境可执行的exe?

当我们使用paddleNLP完成业务开发后&#xff0c;需要将PaddleNLP打包成在Windows操作系统上可执行的exe程序。操作流程&#xff1a; 1.环境准备&#xff1a; python环境&#xff1a;3.7.4 2.安装Pyinstaller pip install pyinstaller 3.目录结构&#xff0c;main.py为可执…

测试开发基础 | 计算机网络篇(二):物理层与数据链路层

【摘要】 计算机网络知识是自动化测试等技术基础&#xff0c;也是测试面试必考题目。霍格沃兹测试学院特别策划了本系列文章&#xff0c;将带大家一步步夯实计算机网络的基础知识。由于物理层知识在互联网软件研发工作中用到的并不多&#xff0c;所以可以仅做一个简单的了解。物…

jQuery语法知识(DOM操作)

一、class 属性: .addClass&#xff08;&#xff09;、.hasClass&#xff08;&#xff09;.removeClass&#xff08;&#xff09;、.toggleClass&#xff08;&#xff09; 二、DOM 插入并包裹现有内容 1、.wrap( wrappingElement): 在每个配的元素外层包上一个html元素。 …