首页 > 其他分享 >MongoTemplate的CRUD的操作示例:

MongoTemplate的CRUD的操作示例:

时间:2024-03-15 21:33:19浏览次数:26  
标签:示例 import CRUD springframework MongoTemplate org query data id

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.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.MongoPage;
import org.springframework.data.mongodb.core.mapping.Document;

@Service
public class UserService {
    @Autowired
    private MongoTemplate mongoTemplate;

    // 插入操作
    public void addUser(User user) {
        mongoTemplate.save(user);
    }

    // 查询操作(根据ID查询)
    public User getUserById(String id) {
        return mongoTemplate.findById(id, User.class);
    }

    // 查询所有用户(分页示例)
    public MongoPage<User> getAllUsers(Pageable pageable) {
        Query query = Query.query(Criteria.where("id").ne(null));
        query.with(pageable);
        return mongoTemplate.find(query, User.class, new MongoPageRequestAdapter<>(pageable));
    }

    // 更新操作
    public void updateUser(String id, String newName) {
        Query query = new Query(Criteria.where("id").is(id));
        Update update = new Update().set("name", newName);

        mongoTemplate.updateFirst(query, update, User.class);
    }

    // 删除操作
    public void deleteUser(String id) {
        Query query = new Query(Criteria.where("id").is(id));
        mongoTemplate.remove(query, User.class);
    }
}


在这个示例中,我们引入了 Pageable 接口和 MongoPage 类,用于实现分页查询。getAllUsers 方法接收一个 Pageable 对象作为参数,然后构建一个查询条件(排除 id 为空的文档),并使用 with 方法将分页信息应用到查询中。最后,使用 find 方法执行查询,并返回一个 MongoPage 对象,其中包含了分页信息和查询结果。
注意,这里使用了 MongoPageRequestAdapter 将 Pageable 对象转换为 org.springframework.data.mongodb.core.query.Pageable 对象,因为 mongoTemplate 需要的是后者的类型。
客户端调用时,可以使用 PageRequest 构造一个分页对象,然后传递给 getAllUsers 方法:

Pageable pageable = PageRequest.of(0, 10); // 第一页,每页10条记录
MongoPage<User> users = userService.getAllUsers(pageable);

这样就可以获取到一个分页结果了。

标签:示例,import,CRUD,springframework,MongoTemplate,org,query,data,id
From: https://www.cnblogs.com/zililove/p/18076289

相关文章

  • C# 通信断线重连问题说明与示例
    引言:在开发网络应用程序时,通信断线是一个常见的问题。特别是在客户端与服务器或者两个客户端之间的通信,由于网络问题、服务器故障或者其他原因,通信可能会意外中断。作为C#开发者,我们需要确保应用程序能够优雅地处理这些情况,并且能够自动重连以恢复通信。本文将详细介绍在C#......
  • usering mongotemplate bases on spring-Data-mongo
     1、findmongoTemplate.find(Queryquery,Class<T>entityClass) returnvalue:List<T> example:  List<users>users=mongoTemplate.find(newQuery(Criteria.where("age").is(20).and("name").is("zhangsan"))......
  • c++高精度减法的方法和示例代码
    C++中的高精度减法指的是在处理大数时,执行减法操作的方法。通常情况下,C++内置的数据类型(如int、long、double等)可能无法满足大数运算的需求,因为它们的范围有限。在这种情况下,需要使用自定义的数据结构或者字符串来表示大数,并实现相应的算术操作。以下是执行高精度减法的基本思......
  • 【Python】一个实用的爬虫代码示例
    目录思路代码实现反爬需要爬取某个网站的前10个页面的图片,图片包括风景类或者人物类思路使用Python爬取某个网站的前10个页面的图片,并且只获取风景或人物类图片,可以按照以下步骤实现:发送HTTP请求:使用requests库向目标网站发送GET请求,获取页面的HTML内容......
  • 基于大模型和向量数据库的 RAG 示例
    1        RAG介绍RAG是一种先进的自然语言处理方法,它结合了信息检索和文本生成技术,用于提高问答系统、聊天机器人等应用的性能。2        RAG的工作流程文档加载(DocumentLoading)从各种来源加载大量文档数据。这些文档将作为知识库,用于后续的信息检索......
  • MYSQL 存储过程示例
    MySQL5.0版本开始支持存储过程。存储过程(StoredProcedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。存储过程思想上很......
  • ESP32-Cam 初步使用:网络摄像头示例
    此片意在教会你如何初步使用ESP32-cam阅读本文,你将学会:一.学会安装Arduino二.学会使用相关例程一、Arduino的下载安装及汉化1.下载Arduino(Arduino软件下载官网)2.Arduino的安装3.Arduino的汉化:左上角File-->Preferences(Ctrl+逗号也能进入)-->Settings-->Lang......
  • Java线程池参数详解及其示例
    线程池在Java并发编程中占据核心地位,通过复用线程资源,可以极大地提高系统资源利用率和响应速度。Java中的java.util.concurrent.ThreadPoolExecutor类提供了丰富的参数配置以满足不同场景的需求。下面我们将逐一介绍线程池的主要构建参数,并给出相应的例子说明:1.corePoolSi......
  • 【C++】【OpenCV-4.9.0】视频写入(VideoWriter,借助samples中的代码示例来进行学习)
    借助官方离线文档中的samples来理解VideoWriter文档位置:samples/cpp/tutorial_code/videoio/video-write/video-write.cpp注:需要提前下载openh264-1.8.0-win64.dll,然后放在Release文件夹下,否则无法正确对输出文件进行编码从而运行失败1#include<iostream>2#include......
  • 项目示例 - 3.服务网关 - 3.Gateway
    项目示例-3.服务网关-3.Gateway关联知识:分布式微服务-3.服务网关-4.Gateway内容提要:基本使用自定义断言自定义局部、全局过滤器基本使用建Module:微服务起名为gateway-server改pom:引入以下依赖<dependencies><!--gateway--><dependency......