JAVAパッケージMongodb操作の一つ:MongoRepository

3746 ワード

MongoRepositoryはHibernateTempleteと似ていて、いくつかの基本的な方法を提供しています.実現方法はfindone()、save()、count()、findAll()、findAll(Pageable)、delete()、deleteAll()、基本的にはこれらですが、
HibernateRepositoryと同様に、MongoRepositoryインタフェースを継承することで、オブジェクトの削除変更を容易に実現できます.Repositoryの機能を使用するには、まずMongoRepositoryインタフェースを継承します.Tは倉庫に保存されているbeanクラスで、TDはこのbeanの唯一の識別タイプで、一般的にObjectIdです.その後サービスにこのインタフェースを注入すれば使用でき、中の方法を実装する必要がなく、springは定義されたルールに基づいて自動的に生成されます.
例:1 public   interface   PersonRepository  extends 2
  3 MongoRepository{ 4 // 5
ただし、MongoRepositoryが実現したのは、最も基本的な削除変更機能だけで、追加のクエリーメソッドを追加するには、以下のルールに従ってインタフェースのメソッドを定義することができます.「findBy+フィールド名+メソッド接尾辞」という形式のクエリー・メソッドをカスタマイズします.メソッドが送信するパラメータ、すなわちフィールドの値です.また、ページング・クエリーもサポートされ、Pageableオブジェクトを送信することでPageセットに戻ります.
例:1 public   interface   PersonRepository  extends 2
  3 MongoRepository{ 4   // age 5         public   Page findByAgeGreaterThan( int   age,Pageable page) ; 6
次はサポートされているクエリーのタイプです.3つのデータごとに対応します.(メソッド接尾辞、メソッド例、mongodbオリジナルクエリー文)
GreaterThan(より大きい)findByAgeGreaterThan(int age){"age":{"$gt":age}}
LessThan(より小さい)findByAgeLessThan(int age){"age":{"$lt":age}}
Between(の間)findByAgeBetween(int from,int to){"age"{"$gt":from,"$lt":to}}
IsNotNull,NotNull(空でないかどうか)findByFirstnameNotNull(){"age":{"$ne":null}}
IsNull,Null(空かどうか)findByFirstnameNull(){"age":null}
Like(ファジイクエリ)findByFirstnameLike(String name){「age」:age}(age as regex)
(No keyword) findByFirstname(String name)  {"age": name}
Not(含まない)findByFirstnameNot(String name){"age":{"$ne":name}}
Near(クエリ地理的に近い)findByLocationNear(Point point){"location":{"$near":[x,y]}}
Within(地理的範囲内)findByLocationWithin(Circle circle){"location":{"$within":{"$center":[[x,y],distance]}}
Within(地理的範囲内)findByLocationWithin(Box box){"location":{"$within":{"$box":[[x 1,y 1],x 2,y 2]}}
以上のクエリー機能は豊富ですが、mongodbの元のクエリー文に基づくクエリー方式を使用すると、使用状況を満たすことができません.例:元のインタフェースに追加1 @Query ( "{ 'name':{'$regex':?2,'$options':'i'}, sales': {'$gte':?1,'$lte':?2}}" ) 2 public   Page findByNameAndAgeRange(String name, double   ageFrom, double ageTo,Pageable page);
注記Queryの中にはmongodbの元のクエリ構文があり、転送されたクエリパラメータを定義し、座標定義方法のパラメータを定義することができます.
また、上記の例で以下のように変更した場合、personテーブルのnameフィールドとageフィールドのみでpersonオブジェクトを構築するように、後で返すデータフィールドを指定することもできます.
ソースの表示
印刷?1 @Query (value= "{ 'name':{'$regex':?2,'$options':'i'}, sales':{'$gte':?1,'$lte':?2}}" ,fields= "{ 'name' : 1, 'age' : 1}" ) 2 public   Page findByNameAndAgeRange(String name, double   ageFrom, double ageTo,Pageable page);