MongoDB学习笔记【part5】基于 MongoRepository 开发CURD

MongoRepository MongoRepository是一个接口,与HibernateRepository类似,通过继承MongoRepository接口,我们可以非常方便地实现对一个MongoDB集合中的文档数据进行增删改查 阅读详情

一、MongoRepository

        Spring Data 提供了对 mongodb 数据访问的支持,只需继承 MongoRepository 类,并按照 Spring Data 规范就可以实现对 mongodb 的操作。

SpringData 方法定义规范:

在这里插入图片描述

在这里插入图片描述

注意事项:
  1. 不能随便声明,必须要符合一定的规范
  2. 查询方法以find、read、get开头
  3. 涉及条件查询时,条件的属性用条件关键字连接
  4. 条件属性首字母需要大写
  5. 支持属性的级联查询,但如果当前类有符合条件的属性则优先使用,而不使用级联属性;若需要使用级联属性,则属性之间使用_强制进行连接

准备步骤:
第一步,创建接口,继承 MongoRepository。

创建接口继承 MongoRepository ,并用 @Repository 标识持久层。

@Repository
public interface UserRepository extends MongoRepository<User,String> {
    
}

MongoRepository 其中有两个泛型 <T,TD>,T为仓库保存的bean类,TD为该bean的唯一标识的类型,一般为ObjectId 。

第二步,自动注入MongoRepository。
    @Autowired
    private MongoRepository mongoRepository;

二、实现 CURD

1.添加一个文档
/**
 * 1.添加
 */
@Test
public void createUser() {
    User user = new User();
    user.setName("parker");
    user.setNumber(4);
    user.setPosition("defender");
    User insert_user = (User) mongoRepository.save(user);

    System.out.println(insert_user);
}
2.查询所有
/**
 * 2.查询所有
 */
@Test
public void findAll() {
    List list = userRepository.findAll();
    System.out.println(list);
}
3.通过id查询
/**
 * 3.id查询
 */
@Test
public void findById() {
    User user = (User) userRepository.findById("63cbf57d92912c3d57276510").get();
    System.out.println(user);
}
4.条件查询
/**
 * 4.条件查询
 */
@Test
public void findUserList1() {
    // select * from User where name="parker" and number=7
    //模拟构造条件
    User user = new User();
    user.setNumber(9);
    user.setPosition("striker");
    Example<User> userExample = Example.of(user);
    //查询
    List list = userRepository.findAll(userExample);
    System.out.println(list);

}
5.模糊查询
/**
 * 5.模糊查询
 */
@Test
public void findUserList2() {
    // select * from User where name like "park"
    //创建匹配器,设置查询条件
    ExampleMatcher matcher = ExampleMatcher.matching() //构建匹配器对象
            .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //设置默认字符串匹配方式:模糊查询
            .withIgnoreCase(true); //设置默认大小写忽略方式:true为忽略大小写
    //模拟构造条件
    User user = new User();
    user.setName("park");
    Example<User> userExample = Example.of(user,matcher);
    //查询
    List list = userRepository.findAll(userExample);
    System.out.println(list);

}
6.分页查询
/**
 * 6.分页查询
 */
@Test
public void findUserPage() {
    //构造排序器,设置排序方法
    Sort sort = Sort.by(Sort.Direction.ASC,"number");
    //构造分页器,设置分页参数
    //返回类型建议为Pageable接口,page=0代表第一页
    Pageable pageable = PageRequest.of(0, 5, sort);
    //创建匹配器,设置查询条件
    ExampleMatcher matcher = ExampleMatcher.matching() //构建匹配器对象
            .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //设置默认字符串匹配方式:模糊查询
            .withIgnoreCase(true); //设置默认大小写忽略方式:true为忽略大小写
    //模拟构造条件,不设置属性代表不进行条件匹配
    User user = new User();
    Example<User> userExample = Example.of(user,matcher);
    //查询
    Page<User> page = userRepository.findAll(userExample, pageable);
    System.out.println("总页数为:"+page.getTotalPages());
    System.out.println("查询的该页数据为:"+page.getContent());
}
7.修改

增加和修改都使用的是 save() 方法,save方法会判断传进来的实体对象是否有 _id 值。若无 ID ,则执行增加操作;若已有 ID,则转而去执行更新修改操作。

/**
 * 7.修改
 */
@Test
public void updateUser(){
    User user = (User) userRepository.findById("63cbf57d92912c3d57276510").get();
    user.setNumber(7);
    user.setPosition("striker");
    User update_user = (User) userRepository.save(user);
    System.out.println(update_user);
}
8.删除
/**
 * 8.删除
 */
@Test
public void deleteUser(){
    userRepository.deleteById("63cbf57d92912c3d57276510");
}
mongodb基于MongoRepository开发CRUD 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nlSdCpp2-1684581540741)(mongodb.assets/1671862679594.png)]Spring Data提供了对mongodb数据访问的支持,我们只需要继承MongoRepository类,按照Spring Data规范就可以了。5、 支持属性的级联查询,但若当前类有符合条件的属性则优先使用,而不使用级联属性,若需要使用级联属性,则属性之间使用_强制进行连接。SpringData 方法定义规范。 阅读详情

相关推荐

Spring Boot如何集成MongoDB?

🏆 本文精选收录于《滚雪球学SpringBoot》专栏,专为零基础学习者量身打造。从Spring基础到项目实战,手把手带你掌握核心技术,助力你快速提升,迈向职场巅峰,开启财富自由之路🚀!无论你是刚入门的小白,还是已有基础的开发者,都能在这里找到适合自己的学习路径!    🌟 关注、收藏、订阅,持续更新中!和我们一起高速成长,突破自我!💡

**My Coding Family** 1174

Java操作MongoDB采用MongoRepository仓库进行条件查询

Java操作MongoDB采用MongoRepository仓库进行条件查询

michael's blog 3万+

【C语言项目合集】这十个入门必备练手项目,让C语言对你来说不再难学!

适合刚入门C语言的编程学习小白的十个练手项目,每个都很经典且实用,让你学完C语言不再迷茫!

kxtxdy的博客 3万+

MongoRepository 基本使用

转载自:https://www.jianshu.com/p/f47621a224a6 叙述 MongoRepository有以下方法 介绍 count()统计总数 count(Example< S > example)条件统计总数 delete(T entities)通过对象信息删除某条数据 deleteById(ID id)通过id删除某条数据 deleteALL(Iterable<? extends T> entities)批量删除某条数据 deleteAll() 清空

lizhengyu891231的博客 7696

运算放大器电路仿真实践:从零实现完整示例

通过一个完整的运算放大器电路仿真示例,深入掌握电路仿真的关键步骤与技巧,帮助电子爱好者和工程师快速上手实际项目设计。

weixin_34725745的博客 1319

解决UE5像素流三大痛点:鼠标锁定/双光标/自动播放(附app.js魔改指南)

本文针对UE5像素流服务在实际应用中常见的鼠标锁定、双光标和自动播放三大交互痛点,提供了深入的技术分析和解决方案。通过详细解析app.js源码,指导开发者如何修改控制方案、修复光标显示以及实现静音自动播放,旨在提升Pixel Streaming应用的用户体验与专业度。

weixin_28025327的博客 382

mongoRepository 支持的所有接口

与HibernateRepository类似,通过继承MongoRepository接口,我们可以非常方便地实现对一个对象的增删改查,要使用Repository的功能,先继承MongoRepository<T,TD>接口,其中T为仓库保存的bean类,TD为该bean的唯一标识的类型,一般为ObjectId。之后在service中注入该接口就可以使用,无需实现里面的方法,s...

weixin_30888413的博客 1297

【STM32学习】(29)STM32实现595驱动三个数码管(标准库和HAL库实现)

我选用的单片机型号为:STM32F103系列 74LS595是一个串转并行输出的芯片,它能为单片机节省很多的IO口,应用场景广泛。 现要求三个数码管动态显示,常规设计都是并行实现,需要8个IO数据口,然后还需要3个IO片选数码管接口,这样大大占用了IO口,导致连接的外设变少。因此我们引入74LS595芯片。电路设计如下: 只需要三个共阴极数码管与三个595芯片级联即可完成,通过RCLK,SCK,SER三个IO即可完成对数码管的动态控制并显示。电路焊接的实物图如下: 要求完成功能:实现数.

XiaoCaiDaYong的博客 8265

MongoRepository深度解析

MongoRepository接口解析 在Mongo数据库中,Repository类有点像mysql的mapper文件的意思,但是比mapper文件更加的简单。 /** * 继承的MongoRepository接口中, * 泛型1是对应的domain包中的实体类 * 泛型2是该类的对应的文档主键 * 记得贴上Repository注解,该类的对象交由spring容器管理 */ @Repository public interface UserRepository extends MongoRepo

代码潮人的博客 4922

深度解析快递柜管理系统的C++实现:设计与实现

本文详细介绍了一个基于C++的快递柜管理系统的设计与实现,包括系统需求分析、架构设计、数据库设计、关键功能模块实现和测试与验证。通过详细的代码示例和理论分析,读者可以全面了解如何开发一个完整的快递柜管理系统。希望本文能够为读者在实际项目开发中提供有价值的参考。

m0_57781768的博客 713

爬取Unsplash高清壁纸:Python爬虫实战教程(最新技术)

在当今数字化时代,高清壁纸已经成为人们个性化设备的重要元素。Unsplash作为全球最知名的免费高质量图片网站,汇集了数百万张由全球摄影师贡献的高清图片。然而,Unsplash官网的下载方式需要手动操作,对于需要批量下载壁纸的用户来说效率较低。本文将带你深入探索如何使用Python爬虫技术高效爬取Unsplash高清壁纸,从基础到进阶,全面掌握图片爬取的核心技术。Unsplash成立于2013年,是一个完全免费的图片分享平台。高质量内容:所有图片均由专业摄影师上传,分辨率普遍达到4K以上免费商用。

2201_76125261的博客 935

MongoRepository、原生、聚合的使用场景

在MongoDB中,MongoRepository、原生查询(Native Query)、聚合框架(Aggregation Framework)是三种不同的查询和数据处理方式,它们适用于不同的场景和需求。综合考虑业务需求和查询复杂度,可以根据具体场景选择合适的查询方式,甚至在一个应用中同时使用多种方式。

Enya61的博客 1070

(第78天)DB RU 补丁升级:19C 升级到 19.22

目前 Oracle 19C 是最新的稳定支持的版本,生产环境中使用的越来越多。当然,随着客户使用量的增多,自然无可避免的产生了很多 BUG,Oracle 每季度都会发布一个 RU 补丁来修复当前季度所产生的一些重要 BUG 补丁。作为 DBA,DB 补丁修复必然是需要掌握的一项技能。本文将介绍如何将数据库升级到最新的 RU 版本。

LuciferLiu_DBA 845

MongoDB基础, 有用 -转载

一、MongoDB的配置 1.引入jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 2.MongoD...

icee 633

AUTOSAR进阶图解==>AUTOSAR_SWS_ECUStateManager

AUTOSAR ECU State Manager 摘要 AUTOSAR ECU状态管理器(EcuM)是Classic Platform 4.4.0规范中的核心模块,负责管理ECU的整个生命周期,包括启动、运行、关机和睡眠等状态转换。EcuM通过协调各基础软件模块的初始化过程,确保系统可靠运行。 主要功能包括: 启动管理 - 控制从硬件初始化到应用运行的完整启动序列 状态转换 - 管理RUN/POST_RUN/SHUTDOWN等状态切换 唤醒验证 - 区分真实与虚假唤醒事件 关机序列 - 确保安全关机保存关

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 2473

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Spring Boot教程之四十九:Spring Boot – MongoRepository 示例

由于其快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置,因此如今它正成为开发人员的最爱。Spring Boot 是一个基于微服务的框架,在其中创建生产就绪的应用程序只需很少的时间。假设实例是新的,以便能够应用插入优化。使用返回的实例进行进一步的操作,因为保存操作可能已经完全改变了实体实例。现在运行您的应用程序,让我们在 Postman 中测试端点,并参考我们的 MongoDB Compass。存储库管理的实体的 id 类型(通常是在实体/模型类中创建的 @Id 的包装类)

潜洋的专栏 1415

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Mongodb入门教程-MongoRepository基础篇

这篇是在之前整合springboot整合mongodb那篇文章基础之上的,整合请移步 MongoRepository有以下方法 count()统计总数 count(Example< S > example)条件统计总数 delete(T entities)通过对象信息删除某条数据 deleteById(ID id)通过id删除某条数据 deleteALL(Iterab...

shawn的博客 1291

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

spring-data-mongodb中的MongoTemplate与MongoRepository

(一)、Spring Data 概述   Spring Data : Spring 的一个子项目。用于简化数据库访问,支持NoSQL 和 关系数据存储。其主要目标是使数据库的访问变得方便快捷。 ● SpringData 项目所支持 NoSQL 存储: MongoDB (文档数据库) Neo4j(图形数据库) Redis(键/值存储) Hbase(列族数据库) ● SpringData ...

fendo 1万+

MongoRepository 基础使用

k8s 部署 MongoDB 三种模式:https://blog.youkuaiyun.com/weixin_42555971/article/details/126243336。

weixin_42555971的博客 1803

MongoRepository中自定义方法的使用以及那些“坑”

一、MongoRepository中自定义方法的使用 首先,mongodb与spring集成的一个接口MongoRepository接口是一个功能强大,能够支持普通增删改查的接口。但是我们经常遇到一些更加进阶的查询语句,比如条件查询,模糊查询,那么MongoRepository本身是不支持进阶查询的,但是却支持一些自定义方法,但是需要遵循MongoRepository中的一些命名规范 1.根据id或者某一个字段查询方法一 2.根据id或者某一个字段查询方法二 3.不仅仅只是这么简单 在mongorepo

yt812100的博客 4409

MongoDB文档-进阶使用-spring-boot整合使用MongoDB---MongoRepository完成增删改查

概念说明:提供与两种操作方式操作简单 缺点是不够灵活操作灵活,在项目中可以灵活使用这两种方式。

阿丹的博客 1639

Mongodb与spring集成(3)------MongoRepository实现增删改查和复杂查询

与HibernateRepository类似,通过继承MongoRepository接口,我们可以非常方便地实现对一个对象的增删改查,要使用Repository的功能,先继承MongoRepository&lt;T, TD&gt;接口,其中T为仓库保存的bean类,TD为该bean的唯一标识的类型,一般为ObjectId。之后在service中注入该接口就可以使用,无需实现里面的方法,spring...

云计算? 682

SpringBoot操作MongoDB之MongoRepository

文章目录前言参考链接时间线MongoRepository简介使用前的准备Mavenapplication.properties配置使用使用流程设计好collections格式编写实体类实现MongoRepository接口创建Service层简单的增删改查增删改查一些需求Page分页Repository层Service层@Queryvalue匹配查询模糊查询条件查询对象查询更多fieldssort总结 前言 之前写过一篇关于MongoDB的总结 其中就已经包含了SpringBoot操作MongoDB之Mo

zhj_1121的博客 1万+

mongorepository简单使用

​ 添加mongodb依赖 项目根目录 pom.xml添加依赖 spring-boot-starter-data-mongodb <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 修改配置文件mongodb相关配置

编程随想随行随心 1423

MongoRepository的 findAll(Example example, Pageable )的使用方法

Example example = Example.of(实体类,ExampleMatch) package com.xuecheng.manage_media.service; import com.xuecheng.framework.domain.media.MediaFile; import com.xuecheng.framework.domain.media.request.Quer...

zhengchaowei5286860的博客 1万+

Mongodb的介绍及基本使用——Spring boot集成mongodb

MongoDB简介 NoSQL简介 NoSQL(Not Only SQL),意即反SQL运动,指的是非关系型的数据库,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于目前铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入 为什幺使用NoSQL : 1、对数据库高并发读写。 2、对海量数据的高效率存储和访问。 3、对数据库的高可扩展性和高可用性。 弱点: 1、数据库事务一致性需求 2、数据库的写实时

señoritaw的博客 872
上一篇: MongoDB学习笔记【part4】SpringBoot集成MongoDB、MongoTemplate开发CURD
下一篇: Nacos学习笔记【part1】安装与注册服务
Parker7
博客等级 码龄7年 18粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Parker7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值