java中mongoTemplate分页查询封装成工具类
时间: 2024-05-03 16:21:24 浏览: 225
以下是一个简单的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类进行构造。
阅读全文