1. 程式人生 > >Mongodb系列- 使用spring-data-mongodb實現分頁查詢

Mongodb系列- 使用spring-data-mongodb實現分頁查詢

mon 分頁查詢 rep template list pre pri 自動生成 aging

在用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實現分頁查詢