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 的默认数据库?
在 MongoDB 的 spring-data 中配置 GridFS 模板