MongDB之整合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/637838.shtml

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

相关文章

基础+常用的数据结构

基础 java基础 JDK 和 JRE JDK&#xff0c;它是功能齐全的 Java SDK&#xff0c;是提供给开发者使用&#xff0c;能够创建和编译 Java 程序的开发套件。它包含了 JRE,同时还包含了编译 java 源码的编译器 javac 以及一些其他工具比如 javadoc&#xff08;文档注释工具&#…

舵机使用总结

文章目录 1 舵机简介2 注意事项3 编写驱动程序3.1 使用STM32作为控制器3.1.1 计算高电平对应程序中的取值范围3.1.2 编写控制程序 1 舵机简介 舵机使用PWM控制&#xff0c;周期为20ms&#xff0c;通过改变高电平占空比来驱动&#xff0c;高电平通常为1~2ms&#xff08; 或 0.5 …

Find My卡片正成为消费电子香饽饽,伦茨科技ST17H6x可以帮到您

今年CES许多公司发布支持苹果Find My的卡片产品&#xff0c;这种产品轻薄可充电&#xff0c;放在钱包、背包或者手提包可以防丢查找&#xff0c;在智能化加持下&#xff0c;防丢卡片使得人们日益关心自行车的去向。最新的防丢卡片与苹果Find My结合&#xff0c;智能防丢&#x…

Android读取assets文件下的JSON文件转String输出

1、从asset路径下读取对应文件转String输出 public static String getJson(Context mContext, String fileName) {// TODO Auto-generated method stubStringBuilder sb new StringBuilder();AssetManager am mContext.getAssets();try {BufferedReader br new BufferedRead…

vue生命周期图示

详见&#xff1a;官网介绍

聊聊Java虚拟机(一)—— 类加载子系统

1. 前言 ​ 虚拟机就是一款用来执行虚拟计算机指令的计算机软件。它相当于一台虚拟计算机。大体上&#xff0c;虚拟机分为系统虚拟机和程序虚拟机。系统虚拟机就相当于一台物理电脑&#xff0c;里面可以安装操作系统&#xff1b;程序虚拟机是为了执行单个计算机程序而设计出来…

海外媒体发稿:出口贸易媒体发稿推广8种方式让您事半功倍-华媒舍

出口贸易已成为越来越多企业的发展方向。要让更多潜在客户了解并选择你的产品&#xff0c;仅靠传统的销售手段已远远不够。作为一名出口贸易从业人员&#xff0c;如何利用媒体发稿推广&#xff0c;事半功倍地扩大市场影响&#xff0c;成为摆在我们面前的一大任务。本文将为您介…

Vulnhub-TECH_SUPP0RT: 1渗透

文章目录 一、前言1、靶机ip配置2、渗透目标3、渗透概括 开始实战一、信息获取二、使用smb服务获取信息三、密码破解四、获取webshell五、反弹shell六、web配置文件获取信息七、提权 一、前言 由于在做靶机的时候&#xff0c;涉及到的渗透思路是非常的广泛&#xff0c;所以在写…

【c++】C++输入输出

C输入&输出 新生婴儿会以自己独特的方式向这个崭新的世界打招呼&#xff0c;C刚出来后&#xff0c;也算是一个新事物&#xff0c;那C是否也应该向这个美好的世界来声问候呢&#xff1f;我们来看下C是如何来实现问候的 #include<iostream> // std是C标准库的命名空间名…

全网最高质量文章:重新学习Java中的HashMap!!

前言 本文参考了美团技术团队的科普文章Java 8系列之重新认识HashMap - 知乎 (zhihu.com) 这篇文章的质量极其高&#xff0c;高到很有可能是全网介绍HashMap这个知识点最优秀的文章&#xff0c;没有之一&#xff01;&#xff01;&#xff01;因此&#xff0c;我决定在我自己的…

idea消除代码区黄色警告

文章目录 前言一、修改配置总结 前言 idea的检查项较多&#xff0c;导致警告比较多看上去很不雅观。 一、修改配置 在idea中打开Settings 取消Warning和Weak Warning的勾选 总结 回到顶部

【鸿蒙4.0】harmonyos Day 04

文章目录 一.Button按钮组件1.声明Button组件&#xff0c;label是按钮文字2.添加属性和事件 二.Slider滑动条组件 一.Button按钮组件 1.声明Button组件&#xff0c;label是按钮文字 Button(label?:ResourceStr) // ResourceStr:可以是普通字符串&#xff0c;也可以是引用定义…

多线程-线程状态和线程安全(加锁-synchronized 关键字)

目录 1.线程状态 示例&#xff1a; 1.1线程状态和状态转移的意义 2.线程安全 2.1观察线程不安全 2.2线程不安全的原因 3.synchronized 关键字 - 监视器锁 monitor lock 3.1synchronized 的特性 1. 互斥 2.可重⼊ 应用示例&#xff1a; 3.2synchronized 使⽤⽰例 1.…

kotlin flatten 与 flatMap

kotln中 flatten 和 flatMap 在 Kotlin 中虽然都用于扁平化处理集合&#xff0c;但它们的用法和效果并不完全一样 flatten flatten 函数主要应用于嵌套集合&#xff08;如 List of List 或 Set of Set 等&#xff09;&#xff0c;它会将嵌套集合中的所有元素合并到一个单一层…

【MySQL】MySQL 8.0 状态变量(Server Status Variables)以及SHOW STATUS命令

文章目录 【MySQL】MySQL 8.0 状态变量&#xff08;Server Status Variables&#xff09;以及SHOW STATUS命令SHOW STATUS命令查看所有的状态变量查看特定状态变量 参考 【声明】文章仅供学习交流&#xff0c;观点代表个人&#xff0c;与任何公司无关。 编辑|SQL和数据库技术(I…

【Vue】双向绑定 v-model

<script setup>import { reactive,ref} from vue let hbs ref([]); //装爱好的值 </script><template><div>吃 <input type"checkbox" name"hbs" v-model"hbs" value"吃"> 喝 <input type"che…

C++Linux网络编程基础

动态库和静态库 当动态库和静态库同时存在的时候&#xff0c;会优先使用动态库。 静态库 1. 制作静态库 g -c -o lib库名.a 源文件代码清单-c表示只编译&#xff0c;-o则是说明需要指定文件名 2. 使用静态库 g 选项 源代码文件名清单 -l库名 -L库文件所在的目录名3. 库文…

conda国内加速

1、配置国内源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ 2、显示源地址 conda config --set show_channel_urls yes

【Arduino】基于 I2C 模块通过 I2C 接口驱动 LCD1602 字符液晶显示模块显示文本:只需两个引脚即可控制 LCD1602 液晶屏

引言 LCD1602是一种16列2行的字符液晶显示模块&#xff0c;常用于Arduino等嵌入式系统的用户接口。为了简化连接和编程&#xff0c;我们将使用I2C接口&#xff0c;这只需要Arduino的两个模拟输入引脚。 步骤 安装 LiquidCrystal_I2C 库 为了在Arduino中使用I2C模块驱动LCD显…

Linux的Shell程序(全面超详细的介绍)

文章目录 前言1.Shell概述1.1概述 2.Shell解析器3.Shell脚本入门4.Shell中的变量4.1 系统变量4.2 自定义变量4.3 特殊变量&#xff1a;$n4.4 特殊变量&#xff1a;$#4.5 特殊变量&#xff1a;\$*、$4.6 特殊变量&#xff1a;$&#xff1f; 5.运算符6.条件判断7.流程控制7.1 if …