spring boot使用MongoRepository简单的CRUD

简单的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对象。

posted @ 2024-03-15 21:25  IT终结者  阅读(262)  评论(0编辑  收藏  举报