jpa是乙個規範,用於操作各種資料庫。
spring data對mongodb的支援。
支援方法對映,根據方法規則生成sql進行查詢,方法命名規則參見4;
flux
findbynameand***
(string name, string ***)
;
spring data mongodb支援在2.2版中引入mongodb的聚合框架。
在spring資料mongodb中的聚合框架的支援是基於以下關鍵抽象:aggregation,aggregationoperation,和aggregationresults。
表示mongodb aggregate操作,並儲存聚合管道指令的描述。通過呼叫類的相應newaggregation(…)靜態工廠方法來建立聚合aggregation,
該方法採用列表aggregateoperation和可選的輸入類。
實際的聚合操作由the的aggregate方法執行,該方法mongotemplate將所需的輸出類作為引數。
表示mongodb聚合管道操作,並描述了應在此聚合步驟中執行的處理。雖然您可以手動建立aggregationoperation,但我們建議使用aggregate類提供的靜態工廠方法來構造aggregateoperation。
聚合操作結果的容器。它提供對原始聚合結果的訪問,document以對映物件的形式和有關聚合的其他資訊。使用spring data mongodb對mongodb聚合框架的示例:
import
static org.springframework.data.mongodb.core.aggregation.aggregation.*;
aggregation agg =
newaggregation
(pipelineop1()
,pipelineop2()
,pipelineopn()
);aggregationresults
results = mongotemplate.
aggregate
(agg,
"input_collection_name"
, outputtype.
class);
list()
;
spring data mongodb當前支援的聚合操作
typedaggregationaggregation = aggregation.newaggregation(student.class, match(new criteria()
.andoperator(criteria.where("orga").is(org)
.and("enable").is(true)
.and("user").is(userid)
.and("resour").is(eventid)
.and("").is("access"))));
return mongotemplate.aggregate(aggregation, "students", student.class);
這兩個是一樣的:
public flux
findrolebynameandpermissions
(list
names)
public flux
findcatalogs1
(list
rolenames)
//or查詢
query query =
query
(where
("name").
is(name)
.and
("age").
is(age)
.oroperator
(where
("teacher").
is("校長"),
where
("mother").
is("teacher"))
);return mongotemplate.
find
(query, student.
class
,"students"
);
spring data對redis的支援。
示範等同於
andfindbylastnameandfirstname
… where x.lastname = ?1 and x.firstname = ?2
orfindbylastnameorfirstname
… where x.lastname = ?1 or x.firstname = ?2
is,equals
findbyfirstname,findbyfirstnameis,findbyfirstnameequals
… where x.firstname = ?1
between
findbystartdatebetween
… where x.startdate between ?1 and ?2
lessthan
findbyagelessthan
… where x.age < ?1
lessthanequal
findbyagelessthanequal
… where x.age <= ?1
greaterthan
findbyagegreaterthan
… where x.age > ?1
greaterthanequal
findbyagegreaterthanequal
… where x.age >= ?1
after
findbystartdateafter
… where x.startdate > ?1
before
findbystartdatebefore
… where x.startdate < ?1
isnull
findbyageisnull
… where x.age is null
isnotnull,notnull
findbyage(is)notnull
… where x.age not null
like
findbyfirstnamelike
… where x.firstname like ?1
notlike
findbyfirstnamenotlike
… where x.firstname not like ?1
startingwith
findbyfirstnamestartingwith
… where x.firstname like ?1(附加引數繫結%)
endingwith
findbyfirstnameendingwith
… where x.firstname like ?1(與前置繫結的引數%)
containing
findbyfirstnamecontaining
… where x.firstname like ?1(包含引數繫結%)
orderby
findbyageorderbylastnamedesc
… where x.age = ?1 order by x.lastname desc
notfindbylastnamenot
… where x.lastname <> ?1
infindbyagein(collection ages)
… where x.age in ?1
notin
findbyagenotin(collection ages)
… where x.age not in ?1
true
findbyactivetrue()
… where x.active = true
false
findbyactivefalse()
… where x.active = false
ignorecase
findbyfirstnameignorecase
… where upper(x.firstame) = upper(?1)
Spring Data學習筆記 查詢方法
spring data支援類似hibernate的查詢語句,也可以寫原生sql語句,下面記錄典型的例子。1.repository 是乙個空介面.即是乙個標記介面 2.若我們定義的介面繼承了 repository,則該介面會被 ioc 容器識別為乙個 repository bean.納入到 ioc 容...
springData學習(二) Query註解詳解
query註解查詢適用於所查詢的資料無法通過關鍵字查詢得到結果的查詢。這種查詢可以擺脫像關鍵字查詢那樣的約束,將查詢直接在相應的介面方法中宣告,結構更為清晰,這是spring data的特有實現。1.查詢id最大的資料 需要注意的是from後面跟的是與表名相對應的實體類名 同時返回值不能寫 retu...
SpringData之repository介面詳解
repository 介面是 spring data 的乙個核心介面,它不提供任何方法,開發者需要在自己定義的介面中宣告需要的方法 與繼承 repository 等價的一種方式。repositorydefinition 註解,並為其指定 domainclass 和 idclass 屬性。目前我所了解...