Spring Data 學習筆記

2021-09-24 23:27:32 字數 4254 閱讀 9812

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 屬性。目前我所了解...