Mongodb系列- 使用spring-data-mongodb實現分頁查詢
在用spring-data-mongodb框架開發的過程中,需要實現分頁查詢,就百度了下,沒找到滿意的又google了下,找到了思路.
在spring-data-mongodb 官方文檔中,建議你使用PagingAndSortingRepository
來實現分頁,但是我是真的不喜歡這個設計啊!!
用方法名來映射查詢語句,框架會自動生成執行代碼,還為此定義了一套語法,舉個例子:
public interface UserRepository extends MongoRepository<User, String>, QueryDslPredicateExecutor<User> {
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實現分頁查詢