首页 > 其他分享 >spring boot使用MongoRepository简单的CRUD

spring boot使用MongoRepository简单的CRUD

时间:2024-03-15 21:35:14浏览次数:21  
标签:MongoRepository 分页 UserRepository spring 查询方法 boot userRepository public

简单的CRUD

首先,定义一个实体类,例如User:

@Document
public class User {
    @Id
    private String id;
    private String name;
    private int age;

    // 构造函数、getter和setter省略...
}

接下来,定义一个继承自MongoRepository的接口,例如UserRepository:

public interface UserRepository extends MongoRepository<User, String> {
    // 可以定义一些自定义查询方法,例如根据用户名查找用户
    Optional<User> findByName(String name);
}

现在,可以使用UserRepository进行CRUD操作了:

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

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

    // 查询操作
    public Optional<User> getUserById(String id) {
        return userRepository.findById(id);
    }
    public Optional<User> getUserByName(String name) {
        return userRepository.findByName(name);
    }

    // 更新操作
    public void updateUser(User user) {
        userRepository.save(user);
    }

    // 删除操作
    public void deleteUser(String id) {
        userRepository.deleteById(id);
    }
}

以上示例中,addUser() 方法用于插入一个新用户,getUserById() 和 getUserByName() 方法用于根据ID和用户名查询用户,updateUser() 方法用于更新用户信息,deleteUser() 方法用于删除用户。
注意,这些方法都是基于MongoRepository提供的默认方法实现的,无需手动编写查询语句。你也可以根据需要在UserRepository中添加自定义查询方法。

分页

在Spring Data MongoDB的MongoRepository中实现分页查询,通常需要结合Pageable接口来完成。下面是一个使用Pageable进行分页查询的例子:
首先,确保你已经引入了Spring Data MongoDB相关的依赖,并且有一个符合分页条件的查询方法。

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserRepository extends MongoRepository<User, String> {
    // 自定义分页查询方法
    Page<User> findByAgeGreaterThan(int age, Pageable pageable);
}

这里的findByAgeGreaterThan方法是一个自定义查询方法,用于查询年龄大于给定值的所有用户,并按照Pageable参数提供的分页和排序信息返回结果。
然后,在服务层中调用这个方法并创建一个PageRequest实例:

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public Page<User> getUsersByAge(int minAge, int page, int size) {
        // 创建分页对象,包含当前页数、每页大小以及可选的排序规则
        Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "id"));

        // 调用repository中的分页查询方法
        return userRepository.findByAgeGreaterThan(minAge, pageable);
    }
}

在这个示例中,getUsersByAge方法接收最小年龄、当前页码和每页大小作为参数,构造了一个PageRequest对象,然后将这个分页对象传入到自定义查询方法中,从而实现了分页查询功能。
客户端调用时可以获取到包含总页数、当前页数据等信息的Page对象。

标签:MongoRepository,分页,UserRepository,spring,查询方法,boot,userRepository,public
From: https://www.cnblogs.com/zililove/p/18076279

相关文章

  • 一种奇怪的方式(.gitignore模版问题)导致部署在CentOS服务器上采用Nginx和uWSGI的Django
    如图所示,在本地测试时好好的页面部署在CentOS服务器上用了Nginx和uWSGI就显示不了CSS样式。并且控制台上显示这一部分样式404Notfund于是我就开始各种查找技术贴学习,有说权限没开要修改nginx.conf配置中usernginx;为userroot;的,有说location结尾要加/的,有说DEBUG=True的,有说要......
  • spring boot使用MongoRepository更新单个字段
    在SpringDataMongoDB中,MongoRepository接口提供了基本的CRUD操作。如果你想要通过MongoRepository更新单个字段,你可以自定义一个更新方法或者使用内置的save()方法。这里是一个示例:假设你有一个名为User的实体类,并且有一个继承自MongoRepository的UserRepository接口://定义Us......
  • satoken和spring security区别对比
    Sa-Token和SpringSecurity都是Java领域中的安全框架,它们在依赖管理、学习曲线以及功能方面存在一些差异。具体分析如下:1.**依赖管理**:Sa-Token被描述为一个轻量级的框架,它的依赖较少,易于集成,特别是与Spring生态紧密集成时。而SpringSecurity作为Spring生态的一部分,其依赖较多,......
  • 基于springboot的图书推荐管理系统、图书借阅管理系统,附源码+数据库+论文+PPT,包远程安
    1、项目介绍本论文主要论述了如何使用JAVA语言开发一个图书个性化推荐系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述图书个性化推荐系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系......
  • RestController:Spring Framework 中用于创建 RESTful Web 服务的注解
    RestController 是SpringFramework中用于创建RESTfulWeb服务的注解。它简化了构建RESTfulWeb服务的过程,使得开发者能够更专注于业务逻辑的实现,而不是底层的HTTP请求和响应处理。一、RestController的基本概念RestController 是SpringWeb模块中的一个核心注......
  • 不只是答题:用WebSocket和SpringBoot让双人PK变得刺激又好玩
    引入......
  • 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"))......
  • 【spring】@PropertySource 注解学习
    @PropertySource介绍@PropertySource是Spring框架中的一个注解,主要用于Java配置类中,用于引入额外的属性文件,以便在Spring应用上下文中使用这些属性。在Spring3.1引入Java配置后,我们可以通过@Configuration注解的类和@Bean注解的方法来进行组件扫描和依赖注入配置。但是,对于......
  • SpringBoot启动过程
    SpringApplication的run方法    使用SpringFactoriesLoader读取listener和ApplicationContextInitializer    创建环境变量,读取配置信息      创建上下文(IoC容器,ApplicationContext)    预初始化上下文(prepareContext):将配置类读取成BeanDefinition    ......
  • RabbitMq 集成到 SpringBoot
    1.最低配置使用1.添加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.2.RELEASE</version></dependency><dependency>&......