Mongodb系列- 使用spring-data-mongodb实现分页查询

Posted 超超boy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb系列- 使用spring-data-mongodb实现分页查询相关的知识,希望对你有一定的参考价值。

在用spring-data-mongodb框架开发的过程中,需要实现分页查询,就百度了下,没找到满意的又google了下,找到了思路.

在spring-data-mongodb 官方文档中,建议你使用PagingAndSortingRepository  来实现分页,但是我是真的不喜欢这个设计啊!!

用方法名来映射查询语句,框架会自动生成执行代码,还为此定义了一套语法,举个例子:


public interface UserRepository extends MongoRepository<User, String>, QueryDslPredicateExecutor<User> {
@Query("{ ‘name‘ : ?0 }")
List<User> findUsersByName(String name);


@Query("{ ‘age‘ : { $gt: ?0, $lt: ?1 } }")
List<User> findUsersByAgeBetween(int ageGT, int ageLT);


List<User> findByName(String name);


List<User> findByNameLikeOrderByAgeAsc(String name);


List<User> findByAgeBetween(int ageGT, int ageLT);


@Query(value = "{}", fields = "{name : 1}")
List<User> findNameAndId();


@Query(value = "{}", fields = "{_id : 0}")
List<User> findNameAndAgeExcludeId();
}

这个接口类只定义了接口,并不需要实现,因为SDM框架(spring-data-mongodb简称,以下都使用简称)会帮你生成代码..

findByAgeBetween(int ageGT, int ageLT);-> 就是where ageGT <age and age <ageLT;

刚开始可能感觉很简单,但是一旦字段多了查询条件复杂了! 你根本不知道自己在写什么!别人看你的代码一长串方法名,也是直接懵逼的..

而 查出来的许多分页查询也是直接使用的PagingAndSortingRepository  这个接口,自动生成...非常不喜欢...就去查怎么使用MongoTemplate实现...

先下班....放假回来补上..哈哈

 

以上是关于Mongodb系列- 使用spring-data-mongodb实现分页查询的主要内容,如果未能解决你的问题,请参考以下文章

“没有找到类型的属性”......将 QueryDslPredicateExecutor 与 MongoDB 和 Spring-Data 一起使用时

Spring-data MongoDB地理查询

如何在 Spring-data 中更改/定义 Mongodb 的默认数据库?

在 MongoDB 的 spring-data 中配置 GridFS 模板

SpringData,JPA,MongoDB,Solr,Elasticsearch底层逻辑关系

MongoDB使用记录