Spring Boot MongoDB分页查询

在Spring Boot中使用MongoDB进行分页查询可以通过以下步骤来实现:

步骤

步骤 描述
步骤一 引入MongoDB的依赖
步骤二 创建MongoDB的配置类
步骤三 创建实体类
步骤四 创建Repository接口
步骤五 创建Service接口及实现类
步骤六 创建Controller类

下面我们将逐步介绍每一步需要做什么,并附上相应的代码。

步骤一:引入MongoDB的依赖

首先,我们需要在项目的pom.xml文件中引入MongoDB的依赖。在dependencies标签下添加以下代码:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

这将使得Spring Boot能够自动配置MongoDB相关的组件。

步骤二:创建MongoDB的配置类

接下来,我们需要创建一个配置类来配置MongoDB的连接信息。创建一个名为MongoConfig的类,并添加以下代码:

@Configuration
public class MongoConfig {

    @Value("${spring.data.mongodb.host}")
    private String mongoHost;

    @Value("${spring.data.mongodb.port}")
    private int mongoPort;

    @Value("${spring.data.mongodb.database}")
    private String mongoDatabase;

    @Bean
    public MongoClient mongoClient() {
        return new MongoClient(mongoHost, mongoPort);
    }

    @Bean
    public MongoTemplate mongoTemplate() throws Exception {
        return new MongoTemplate(mongoClient(), mongoDatabase);
    }
}

这里使用了@Configuration注解来标识该类为配置类,@Value注解用于读取application.propertiesapplication.yml中的配置项。

步骤三:创建实体类

然后,我们需要创建一个实体类来映射MongoDB中的文档。创建一个名为User的类,并添加以下代码:

@Document(collection = "users")
public class User {

    @Id
    private String id;
    private String name;
    private int age;

    // 省略getter和setter方法
}

@Document注解用于标识该类为MongoDB的文档,@Id注解用于标识类的主键。

步骤四:创建Repository接口

接下来,我们需要创建一个Repository接口来定义基本的CRUD操作和分页查询方法。创建一个名为UserRepository的接口,并继承MongoRepository,添加以下代码:

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

    Page<User> findAll(Pageable pageable);
}

@Repository注解用于标识该接口为Repository接口,继承MongoRepository可以继承一些基本的CRUD操作方法,我们还可以自定义一些其他的查询方法。

步骤五:创建Service接口及实现类

然后,我们需要创建一个Service接口及其实现类来定义具体的业务逻辑。创建一个名为UserService的接口,并添加以下代码:

public interface UserService {

    Page<User> getUsers(Pageable pageable);
}

然后,创建一个名为UserServiceImpl的实现类,并添加以下代码:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public Page<User> getUsers(Pageable pageable) {
        return userRepository.findAll(pageable);
    }
}

@Service注解用于标识该类为Service类,使用@Autowired注解将UserRepository注入进来,实现getUsers方法来调用Repository中的分页查询方法。

步骤六:创建Controller类

最后,我们需要创建一个Controller类来处理请求并返回响应。创建一个名为UserController的类,并添加以下代码:

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public Page<User> getUsers(@RequestParam(defaultValue = "0") int page,
                               @RequestParam(defaultValue = "10") int size) {
        Pageable pageable = PageRequest.of(page, size);
        return userService.getUsers(pageable);
    }
}

@RestController注解用于标识该类为Controller