spring data jpa復(fù)雜查詢

基礎(chǔ)介紹


1.predicate(位于?javax.persistence.criteria包)

此接口的官方說明https://docs.oracle.com/javaee/6/api/javax/persistence/criteria/Predicate.html

接口的聲明如下:


public interface Predicate extends Expression {

Predicate.BooleanOperator getOperator();

? ? boolean isNegated();

? ? List> getExpressions();

? ? Predicate not();

? ? public static enum BooleanOperator {

AND,

? ? ? ? OR;

? ? ? ? private BooleanOperator() {

}

}

}


方法簡(jiǎn)介:

方法詳情:

用途:用于jpa復(fù)雜查詢


jpa specification復(fù)雜查詢

使用specification的核心方法:

List<Object> findAll(Specification specification,Pageble pageble);

對(duì)于這個(gè)方法歧蒋,可以選擇兩種方式使用:

1.在repository里面繼承JpaSpecificationExecutor類盆昙,那么可以直接使用此方法舀奶。

2.不用專門繼承JpaSpecificationExecutor類,使用基礎(chǔ)的JpaRepository。我們需要在repository接口里面聲明這個(gè)方法粪般,好讓jpa自動(dòng)識(shí)別。

然后才可以使用。

第一種方法的使用樣例:

eg:

@Repository

public interface RegisterInformationRepository extends JpaSpecificationExecutor<RegisterInformation>, JpaRepository<RegisterInformation, String> {

}

那么具體怎么使用這個(gè)方法呢构订?

給出一個(gè)樣例:

public Paging>list(String DEPARTMENT_CODE, int page, int size) {

//? ? ? ? //排序

? ? ? ? Sort.Order order =new Sort.Order(Sort.Direction.DESC, "createdTime");

? ? ? ? Sort sort = Sort.by(order);

? ? ? ? //分頁(yè)

? ? ? ? Pageable pageable = PageRequest.of(page, size, sort);

? ? ? ? /**

* root:是我們要查詢的類型

* query:添加查詢條件

* cb:構(gòu)建Predicate

*/

? ? ? ? Specification specification = (Specification) (root, criteriaQuery, criteriaBuilder) -> {

Predicate predicate = criteriaBuilder.and(criteriaBuilder.equal(root.get("isRemoved"), false));

? ? ? ? ? ? if (StringUtils.isNotEmpty(DEPARTMENT_CODE)) {

predicate.getExpressions().add(criteriaBuilder.equal(root.get("DEPARTMENT_CODE"), DEPARTMENT_CODE));

? ? ? ? ? ? }

return predicate;

? ? ? ? };

? ? ? ? Page result =departmentRepository.findAll(specification, pageable);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市避矢,隨后出現(xiàn)的幾起案子悼瘾,更是在濱河造成了極大的恐慌,老刑警劉巖审胸,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亥宿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡砂沛,警方通過查閱死者的電腦和手機(jī)烫扼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碍庵,“玉大人映企,你說我怎么就攤上這事【苍。” “怎么了堰氓?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)苹享。 經(jīng)常有香客問我双絮,道長(zhǎng),這世上最難降的妖魔是什么得问? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任囤攀,我火速辦了婚禮,結(jié)果婚禮上宫纬,老公的妹妹穿的比我還像新娘焚挠。我一直安慰自己,他們只是感情好漓骚,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布蝌衔。 她就那樣靜靜地躺著,像睡著了一般认境。 火紅的嫁衣襯著肌膚如雪胚委。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天叉信,我揣著相機(jī)與錄音亩冬,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛硅急,可吹牛的內(nèi)容都是我干的覆享。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼营袜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼撒顿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起荚板,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凤壁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后跪另,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拧抖,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年免绿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唧席。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嘲驾,死狀恐怖淌哟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辽故,我是刑警寧澤徒仓,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站榕暇,受9級(jí)特大地震影響蓬衡,放射性物質(zhì)發(fā)生泄漏喻杈。R本人自食惡果不足惜彤枢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望筒饰。 院中可真熱鬧缴啡,春花似錦、人聲如沸瓷们。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谬晕。三九已至碘裕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間攒钳,已是汗流浹背帮孔。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人文兢。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓晤斩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親姆坚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子澳泵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348