mongoTemplate分页查询java 代码示例
时间: 2023-04-07 11:02:17 浏览: 75
可以回答这个问题。以下是一个简单的mongoTemplate分页查询java代码示例:
```
Query query = new Query();
query.skip((pageNum-1)*pageSize).limit(pageSize);
List<User> userList = mongoTemplate.find(query, User.class);
```
其中,pageNum表示当前页码,pageSize表示每页显示的数据条数,User.class表示查询的实体类。
相关问题
用java代码生成mongotemplate 的分页查询
可以使用以下代码来生成MongoTemplate的分页查询:
```
public Page<User> findAllUsers(int pageNo, int pageSize) {
Query query = new Query();
query.with(Sort.by(Sort.Direction.ASC, "name"));
long totalCount = mongoTemplate.count(query, User.class);
List<User> users = mongoTemplate.find(query.with(PageRequest.of(pageNo, pageSize)), User.class);
return new PageImpl<>(users, PageRequest.of(pageNo, pageSize), totalCount);
}
```
其中,PageRequest.of(pageNo, pageSize)表示生成一个包含指定页码和每页显示数量的PageRequest对象,将其传给MongoTemplate的find()方法即可生成分页查询。
java中mongoTemplate分页查询封装成工具类
以下是一个简单的MongoDB分页查询工具类的实现,使用了MongoTemplate和PageRequest:
```java
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
public class MongoPageUtils<T> {
/**
* 分页查询
* @param mongoTemplate mongoTemplate实例
* @param collectionName 集合名称
* @param pageNo 页号
* @param pageSize 每页大小
* @param sortField 排序字段
* @param sortOrder 排序方式
* @param query 查询条件
* @param clazz 返回结果类型
* @return 分页结果
*/
public Page<T> findPage(MongoTemplate mongoTemplate, String collectionName, int pageNo, int pageSize, String sortField, Sort.Direction sortOrder, Query query, Class<T> clazz) {
// 分页查询条件
PageRequest pageRequest = PageRequest.of(pageNo - 1, pageSize, sortOrder, sortField);
// 查询总记录数
long totalCount = mongoTemplate.count(query, clazz, collectionName);
// 分页查询
query.with(pageRequest);
// 执行查询
return new PageImpl<>(mongoTemplate.find(query, clazz, collectionName), pageRequest, totalCount);
}
/**
* 分页查询
* @param mongoTemplate mongoTemplate实例
* @param collectionName 集合名称
* @param pageNo 页号
* @param pageSize 每页大小
* @param sortField 排序字段
* @param sortOrder 排序方式
* @param criteria 查询条件
* @param clazz 返回结果类型
* @return 分页结果
*/
public Page<T> findPage(MongoTemplate mongoTemplate, String collectionName, int pageNo, int pageSize, String sortField, Sort.Direction sortOrder, Criteria criteria, Class<T> clazz) {
// 查询条件
Query query = new Query(criteria);
// 分页查询
return findPage(mongoTemplate, collectionName, pageNo, pageSize, sortField, sortOrder, query, clazz);
}
}
```
使用方法:
```java
MongoPageUtils<User> pageUtils = new MongoPageUtils<>();
// 查询条件
Criteria criteria = Criteria.where("age").gt(18);
// 排序条件
Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
// 分页查询
Page<User> page = pageUtils.findPage(mongoTemplate, "user", 1, 10, "createTime", sort.getDirection(), criteria, User.class);
// 获取分页结果
List<User> userList = page.getContent();
```
其中,MongoTemplate是Spring提供的操作MongoDB的工具类,可以在项目启动时进行注入。对于查询条件和排序条件,可以使用Criteria和Sort类进行构造。