精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

告別SQL查詢煩惱!Spring Boot 強(qiáng)大的六種查詢模式

數(shù)據(jù)庫 其他數(shù)據(jù)庫
Spring Data JPA支持通過方法名定義查詢,遵循命名約定(如findBy、And、Or等)自動(dòng)生成JPQL查詢語句,無需手動(dòng)編寫SQL,簡化數(shù)據(jù)訪問層開發(fā),提升編碼效率與可讀性。

環(huán)境:SpringBoot3.4.2

1. 簡介

Spring Data JPA作為Spring生態(tài)中簡化數(shù)據(jù)訪問的核心組件,通過抽象JPA規(guī)范降低了持久層開發(fā)復(fù)雜度。其查詢模式覆蓋從快速原型開發(fā)到復(fù)雜業(yè)務(wù)場景的全生命周期需求:

  • 方法名派生查詢適合簡單條件檢索,如用戶狀態(tài)過濾
  • @Query注解支持原生SQL與JPQL,可處理跨庫聯(lián)表查詢或數(shù)據(jù)庫特定優(yōu)化
  • JPA Criteria API與Specification接口則通過動(dòng)態(tài)條件構(gòu)建,滿足那些多維度篩選高靈活性場景

分頁排序與事務(wù)管理集成進(jìn)一步強(qiáng)化了其在企業(yè)級(jí)應(yīng)用中的實(shí)用性。

本篇文章將為你詳細(xì)介紹6種強(qiáng)大的查詢模式。

2.實(shí)戰(zhàn)案例

2.1 派生查詢(基于方法名)

Spring Data JPA支持通過方法名定義查詢,遵循命名約定(如findBy、And、Or等)自動(dòng)生成JPQL查詢語句,無需手動(dòng)編寫SQL,簡化數(shù)據(jù)訪問層開發(fā),提升編碼效率與可讀性,如下示例:

public interface BookRepository extends JpaRepository<Book, Long> {


  Optional<Book> findByTitle(String title) ;


  List<Book> findByPriceGreaterThan(BigDecimal price);
}

? 可讀性強(qiáng)且易于維護(hù)。

?? 不適用于復(fù)雜的聯(lián)接或篩選條件。

?? 專業(yè)提示:對于簡單的增刪改查(CRUD)操作或簡單篩選條件,使用派生查詢。不要在業(yè)務(wù)邏輯中過度使用它們。

如下列出了支持的查詢方法謂詞關(guān)鍵字和修飾符:

圖片圖片

2.2 JPQL查詢

JPQL(Java Persistence Query Language)是JPA的查詢語言,基于實(shí)體類及其屬性進(jìn)行面向?qū)ο蟛樵?,支持SELECT、UPDATE、DELETE操作,通過@Query注解或EntityManager執(zhí)行,屏蔽底層數(shù)據(jù)庫差異,提升可移植性,如下示例:

@Query("SELECT u FROM Book u WHERE u.price > :status AND u.title LIKE %:keyword%")
List<Book> findBooks(@Param("price") BigDecimal price, 
    @Param("keyword") String keyword);

? 可在不同數(shù)據(jù)庫間通用。

?? 不支持?jǐn)?shù)據(jù)庫特有的函數(shù)(如 LIMIT、ILIKE 等)。

?? 專業(yè)提示:當(dāng)需要不使用原生 SQL 而實(shí)現(xiàn)動(dòng)態(tài)篩選或?qū)嶓w關(guān)系時(shí),請使用 JPQL(Java 持久化查詢語言)。

2.3 原生SQL查詢

當(dāng)JPQL無法滿足復(fù)雜查詢需求(如多表連接、子查詢、數(shù)據(jù)庫特有函數(shù)或性能優(yōu)化)時(shí),需使用原生SQL。它直接操作數(shù)據(jù)庫,支持高級(jí)特性與特定語法,適用于復(fù)雜報(bào)表、分頁查詢或遺留系統(tǒng)集成,提升靈活性與性能,如下示例:

@Query(value = """
      SELECT b.title, b.isbn, AVG(b.price) as avg_price, COUNT(*) as book_count
      FROM t_book b
      WHERE b.description LIKE %?1%
        AND b.page >= ?2
      GROUP BY b.title, b.isbn
      HAVING AVG(b.price) > ?3
      ORDER BY avg_price DESC
      """, nativeQuery = true)
List<Object[]> findBookSummaryByDescriptionAndPage(String desc, Integer page, BigDecimal minAvgPrice);

? 非常適合復(fù)雜的聯(lián)接、子查詢或性能調(diào)優(yōu)。

?? 受限于特定的數(shù)據(jù)庫方言。

?? 專業(yè)提示:將原生查詢封裝在存儲(chǔ)庫方法中,以保持服務(wù)層的整潔和可移植性。

2.4 Criteria API查詢(動(dòng)態(tài)查詢)

Criteria API 是 JPA 提供的類型安全、面向?qū)ο蟮膭?dòng)態(tài)查詢構(gòu)建方式,通過 Java 代碼而非字符串拼接 JPQL,適用于條件動(dòng)態(tài)變化的查詢場景,提升可維護(hù)性與編譯時(shí)檢查能力,如下示例:

private final EntityManager entityManager ;


public List<Book> findBooksByCriteria(String title, BigDecimal minPrice, Integer minPage, String rating) {
  CriteriaBuilder cb = entityManager.getCriteriaBuilder();
  CriteriaQuery<Book> query = cb.createQuery(Book.class);
  Root<Book> root = query.from(Book.class);
  List<Predicate> predicates = new ArrayList<>();
  if (title != null && !title.isEmpty()) {
    predicates.add(cb.like(cb.lower(root.get("title")), "%" + title.toLowerCase() + "%"));
  }
  if (minPrice != null) {
    predicates.add(cb.greaterThanOrEqualTo(root.get("price"), minPrice));
  }
  if (minPage != null) {
    predicates.add(cb.greaterThanOrEqualTo(root.get("page"), minPage));
  }
  if (rating != null && !rating.isEmpty()) {
    predicates.add(cb.equal(root.get("rating"), rating));
  }
  query.select(root).where(predicates.toArray(new Predicate[0])).orderBy(cb.asc(root.get("title")));
  return entityManager.createQuery(query).getResultList();
}

控制臺(tái)輸出:

圖片圖片

? 動(dòng)態(tài)查詢,無需字符串拼接。

?? 語法冗長——但安全且功能強(qiáng)大。

?? 專業(yè)提示:在篩選條件經(jīng)常變化的內(nèi)部搜索API中使用CriteriaBuilder。

2.5 Specification API(簡潔的動(dòng)態(tài)查詢)

Specification 是 Spring Data JPA 對 JPA Criteria API 的封裝,支持以函數(shù)式編程方式構(gòu)建可復(fù)用、可組合的查詢條件。通過 Specification<T> 接口實(shí)現(xiàn)動(dòng)態(tài)查詢,適用于復(fù)雜、多條件組合的業(yè)務(wù)場景,提升代碼可讀性與模塊化程度,尤其適合后臺(tái)管理搜索功能,如下示例:

public class BookSpecs {
  public static Specification<Book> hasTitleLike(String keyword) {
    return (root, query, criteriaBuilder) -> keyword == null || keyword.isEmpty() ? null
        : criteriaBuilder.like(criteriaBuilder.lower(root.get("title")), "%" + keyword.toLowerCase() + "%");
  }
  public static Specification<Book> hasMinPrice(BigDecimal minPrice) {
    return (root, query, criteriaBuilder) -> minPrice == null ? null
        : criteriaBuilder.greaterThanOrEqualTo(root.get("price"), minPrice);
  }
}
Repository需要繼承如下接口
public interface BookRepository 
    extends JpaSpecificationExecutor<Book> {
}
測試用例
@Test
public void testSpec() {
  List<Book> books = this.bookRepository.findAll(BookSpecs.hasTitleLike("Spring")) ;
  System.err.println(books) ;
}
控制臺(tái)輸出

圖片圖片

JpaSpecificationExecutor支持如下的接口

圖片

2.6 QBE查詢

Query by Example(QBE,示例查詢)是一種用戶友好的查詢技術(shù),提供簡潔的接口,支持動(dòng)態(tài)生成查詢條件。它無需手動(dòng)編寫包含字段名的查詢語句,甚至完全不需要使用數(shù)據(jù)庫特定的查詢語言(如 SQL、JPQL),如下示例:

public List<Book> searchBooks(String title, BigDecimal price, String rating) {
  // 1.創(chuàng)建示例實(shí)體(Probe)
  Book probe = new Book();
  probe.setTitle(title); 
  probe.setPrice(price);
  probe.setRating(rating);
  // 2.構(gòu)建匹配器(Matcher),實(shí)現(xiàn)復(fù)雜控制
  ExampleMatcher matcher = ExampleMatcher.matching()
          .withStringMatcher(StringMatcher.CONTAINING) // 字符串使用LIKE %...%
          .withIgnoreNullValues()                     // 忽略null值(默認(rèn))
          .withMatcher("rating", match -> match.exact()); // rating字段要求精確匹配
  // 3.創(chuàng)建Example實(shí)例
  Example<Book> example = Example.of(probe, matcher);
  // 4.執(zhí)行查詢
  return bookRepository.findAll(example);
}
控制臺(tái)輸出

圖片圖片

? 非常適合搜索表單。

?? 不支持聯(lián)表查詢或復(fù)雜邏輯。

?? 專業(yè)提示:可在管理后臺(tái)或管理工具中用于快速篩選。

總結(jié)


圖片圖片

責(zé)任編輯:武曉燕 來源: Springboot全家桶實(shí)戰(zhàn)案例
相關(guān)推薦

2024-10-14 13:26:42

2024-05-30 08:51:28

Spring數(shù)據(jù)分布式

2022-12-06 10:39:43

Spring事務(wù)失效

2024-01-05 13:25:00

架構(gòu)架構(gòu)模式開發(fā)

2017-10-20 11:07:45

編程代碼編程模式

2025-07-08 08:20:39

2024-08-30 11:11:01

2025-04-29 08:21:30

ANRAndroidUI

2010-10-22 16:29:11

SQL Server刪

2019-08-02 08:50:47

API架構(gòu)微服務(wù)

2015-07-28 13:45:14

大數(shù)據(jù)商業(yè)商業(yè)模式

2024-10-12 08:18:21

Spring接口組件

2024-12-18 16:19:51

2010-04-14 10:18:39

Linux init

2025-07-14 03:00:00

2017-06-26 10:35:58

前端JavaScript繼承方式

2011-06-07 09:36:18

2012-10-15 13:26:31

云計(jì)算架構(gòu)

2016-01-15 17:36:29

云計(jì)算云應(yīng)用

2025-02-27 00:00:30

SpringJava方式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

97中文字幕在线观看| 亚洲亚洲精品三区日韩精品在线视频 | 宅男一区二区三区| www日本视频| 国产亚洲在线观看| 色一情一乱一区二区| 亚洲第一成肉网| 亚洲精品永久免费视频| 最近中文字幕一区二区三区| 国产精品国色综合久久| 中文字幕 自拍偷拍| 亚洲精品99| 亚洲视频在线观看免费| 好吊操视频这里只有精品| 怡红院成人在线| 亚洲一区二区在线免费观看视频| 日本一区二区视频| 日韩一级中文字幕| 国内精品在线播放| 欧美一级淫片aaaaaaa视频| 日韩在线视频网址| 精品日本12videosex| 精品国产免费久久| 欧洲美女亚洲激情| 91国内外精品自在线播放| 亚洲va在线va天堂| 久艹在线免费观看| 黄色网页在线观看| 欧美国产一区二区在线观看| 国产一区二区精品在线| 精品人妻无码一区二区色欲产成人 | 91一区二区在线| 91手机在线视频| 一级黄色a视频| 日本不卡不码高清免费观看| 4p变态网欧美系列| 日韩欧美亚洲视频| 怡红院精品视频在线观看极品| 日韩亚洲欧美成人| 亚洲aaa视频| 日韩激情免费| 在线日韩第一页| 91精彩刺激对白露脸偷拍| 久久久久观看| 亚洲精品国偷自产在线99热| 69xxx免费视频| 77成人影视| 欧美刺激午夜性久久久久久久| 成年网站免费在线观看| 国产精品麻豆成人av电影艾秋| 一本色道久久综合狠狠躁的推荐| 欧美深夜福利视频| 成人黄色动漫| 天天综合日日夜夜精品| 青青青在线视频播放| 136福利第一导航国产在线| 亚洲夂夂婷婷色拍ww47| 99久久99久久精品| 欧美黄色视屏| 午夜一区二区三区在线观看| 成人午夜免费在线| 天堂中文av在线资源库| 日韩欧美亚洲范冰冰与中字| 亚洲熟妇av一区二区三区| 国产精品迅雷| 在线亚洲欧美专区二区| 中文字幕国内自拍| 天堂综合在线播放| 日韩一级片在线观看| 日本少妇一级片| 精品素人av| 亚洲三级av在线| 东京热无码av男人的天堂| 99久久综合狠狠综合久久aⅴ| 日韩在线视频中文字幕| 国产十六处破外女视频| 黄色亚洲在线| 国产成人一区三区| 国产视频aaa| 成人18视频在线播放| 欧美一区少妇| 国产最新在线| 精品欧美一区二区三区| 999在线免费视频| 国产免费av国片精品草莓男男| 日韩欧美色综合网站| 亚洲av无码国产精品久久| 精品精品久久| 国内免费精品永久在线视频| 无码人妻精品一区二| 精品一区二区三区的国产在线播放| 亚洲综合日韩在线| 欧美日韩在线精品一区二区三区激情综| 欧美国产日产图区| 无码人妻精品一区二区蜜桃网站| 香蕉伊大人中文在线观看| 欧美日韩高清一区二区不卡| 亚洲欧美综合视频| av亚洲在线观看| 欧美激情精品在线| 中文字幕资源网| 成人av在线一区二区三区| 手机成人在线| 咪咪网在线视频| 91精品国产一区二区三区蜜臀| 波多野结衣先锋影音| 97色伦图片97综合影院| 91国内精品久久| av片免费播放| 国产精品午夜春色av| 91丨porny丨探花| 亚洲欧美综合久久久久久v动漫| 亚洲第一二三四五区| 国产3级在线观看| 性欧美长视频| 99影视tv| 精品国产白色丝袜高跟鞋| 日韩欧亚中文在线| 白嫩情侣偷拍呻吟刺激 | 色偷偷偷亚洲综合网另类 | 久久国产精品久久久久久电车| 成人性教育视频在线观看| 男男激情在线| 精品成人乱色一区二区| 亚洲国产日韩在线一区| 第一会所亚洲原创| 日本国产欧美一区二区三区| 亚洲国产www| 亚洲欧美视频在线观看视频| 成年人在线观看视频免费| 精品欧美午夜寂寞影院| 欧美疯狂性受xxxxx另类| 中文字幕在线2019| 中文字幕欧美激情一区| av天堂永久资源网| 欧美美女黄色| 91成人在线播放| 蜜臀av在线观看| 亚洲一区影音先锋| 国产伦理在线观看| 欧美国产激情| 亚洲自拍偷拍色片视频| gogo在线观看| 欧美一区二区三区在线视频| 波多野结衣久久久久| 美女一区二区视频| 亚洲一区三区视频在线观看| 国产精品videossex撒尿| 国产一区二区三区在线| 国产午夜精品久久久久| 久久精品夜夜夜夜久久| 国产性生交xxxxx免费| 精品国产乱码久久久久久蜜坠欲下 | 久久香蕉视频网站| 一区中文字幕| 久久久久久久久综合| 蜜桃av噜噜一区二区三区麻豆| 一区二区三区精品在线| 中文字幕99页| 99精品99| 日韩精品一区二区三区外面| 国产精品久久久久久久久久齐齐 | 麻豆久久婷婷| 欧美深深色噜噜狠狠yyy| 国产精品高清乱码在线观看 | 久久久久久国产免费a片| 免费视频最近日韩| 色中文字幕在线观看| 日韩精品一区国产| 91精品国产自产91精品| 国产视频二区在线观看| 欧美日韩性生活| 欧美色图一区二区| 99国产精品一区| 中文字幕av不卡在线| 亚洲精品888| 国产欧美日韩亚洲| 最新日韩一区| 欧美国产日韩中文字幕在线| 天天操天天操天天| 欧美三级日本三级少妇99| 成年人二级毛片| 成人午夜av电影| 欧美 国产 小说 另类| 久久视频精品| 国产精品二区在线观看| 亚洲第一影院| 欧美成在线视频| 日本中文字幕一区二区有码在线| 欧美三级一区二区| 国产性猛交普通话对白| 国产亚洲精品中文字幕| 搡的我好爽在线观看免费视频| 亚洲精品日韩久久| 亚洲自拍三区| 日韩精品欧美大片| 成人自拍性视频| 制服丝袜专区在线| 欧美成人免费全部| 国产一级网站视频在线| 精品免费国产二区三区| 午夜一区二区三区四区| 亚洲国产精品一区二区久久恐怖片 | 亚洲精品无码专区| 欧美色视频一区| 69视频免费在线观看| 自拍偷拍欧美激情| 成人在线一级片| 成人精品视频一区二区三区| 最新天堂中文在线| 99综合在线| 成人午夜视频免费观看| 欧美日韩水蜜桃| 免费成人av网站| 一区中文字幕| 91在线网站视频| 国产福利亚洲| 日韩暖暖在线视频| mm视频在线视频| 九九热精品在线| 天堂а√在线资源在线| 亚洲人成电影在线| 日韩在线视频观看免费| 日韩视频一区二区| 国产女人高潮毛片| 欧美人与禽zozo性伦| 久久久久久久久久成人| 亚洲成a人片综合在线| 18岁成人毛片| 亚洲人成精品久久久久久| 手机看片国产日韩| 国产女人aaa级久久久级 | 精品国产一区二区三区噜噜噜 | 在线观看一区二区视频| 日韩精品一区二区av| 一区二区三区中文在线观看| 亚洲欧美卡通动漫| 亚洲视频每日更新| 女人18毛片毛片毛片毛片区二 | 欧美一级中文字幕| 国产一区二区三区四区老人| 日韩精品一区二区三区电影| 91中文字幕精品永久在线| 亚洲精品永久www嫩草| 欧美色女视频| 亚洲日本欧美在线| 天天久久综合| 天堂av在线中文| 国语精品一区| 免费av手机在线观看| 在线观看免费91| 欧美一区二区| 日韩成人三级视频| 精品96久久久久久中文字幕无| 91亚洲精品国产| 亚洲精品专区| av片中文字幕| 奇米777欧美一区二区| 国产原创精品在线| 国产精品正在播放| fc2成人免费视频| 26uuu精品一区二区三区四区在线| 国产精品1000部啪视频| 国产日本一区二区| 99久久精品久久亚洲精品| 亚洲视频资源在线| 久久久精品视频在线| 欧美日韩美女在线观看| 国产情侣免费视频| 91精品免费观看| 欧美自拍偷拍第一页| 亚洲毛片一区二区| 免费看美女视频在线网站| 欧美日本高清视频| 在线中文字幕播放| 91亚洲午夜在线| 久久丝袜视频| 一本一道久久a久久综合精品 | 久久久免费视频网站| 美女脱光内衣内裤视频久久影院| 色一情一区二区| 成人免费毛片a| 日本人亚洲人jjzzjjz| 亚洲日本青草视频在线怡红院| 国产一级在线免费观看| 色伊人久久综合中文字幕| 97人妻精品一区二区三区视频 | www.四虎在线| 久久久99久久精品欧美| 在线看的片片片免费| 婷婷综合久久一区二区三区| 欧美成人一区二区视频| 日韩美女视频在线| 国际av在线| 欧美人交a欧美精品| 久久精品女人天堂av免费观看| 91亚洲精品久久久久久久久久久久| 日韩欧美在线精品| 国产精品12p| 性娇小13――14欧美| 免费观看黄网站| 久久精品欧美日韩| 国产在线视频卡一卡二| 欧美视频第二页| 头脑特工队2免费完整版在线观看| 日韩在线观看视频免费| 麻豆免费版在线观看| 亚洲专区国产精品| 国产在线日韩精品| 亚洲人精品午夜射精日韩| 精品在线一区二区三区| japanese中文字幕| 亚洲高清一区二区三区| 国产伦理一区二区| 在线a欧美视频| 一二三四视频在线中文| 99久久久精品免费观看国产| 99精品美女| 男人插女人下面免费视频| 不卡欧美aaaaa| 欧美精品一级片| 宅男噜噜噜66一区二区66| 北条麻妃在线| 国产精品91在线观看| 免费福利视频一区| 成人精品视频在线播放| 极品少妇xxxx精品少妇偷拍| 无码少妇精品一区二区免费动态| 午夜成人免费视频| 懂色av成人一区二区三区| 久久伊人免费视频| 国产精品一区三区在线观看| 亚洲图片小说在线| 免费在线视频一区| 少妇视频在线播放| 欧美日韩小视频| 成人在线二区| 国产精品爽爽爽| 郴州新闻综合频道在线直播| 久章草在线视频| 久久精品一区蜜桃臀影院| 久久夜色精品国产噜噜亚洲av| 亚洲韩国日本中文字幕| 99riav视频在线观看| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 亚洲人成网站在线观看播放| 日日夜夜一区二区| 日韩丰满少妇无码内射| 一本久久a久久免费精品不卡| 少妇激情av一区二区| 欧美专区在线播放| 精品国产一级毛片| 97人人爽人人| 亚洲精品菠萝久久久久久久| 国产精品丝袜黑色高跟鞋| 久久大大胆人体| youjizz亚洲| 国产资源在线视频| 久久男人中文字幕资源站| 亚洲高清在线看| 俺去亚洲欧洲欧美日韩| 日韩中文字幕视频网| 国产午夜大地久久| 2021久久国产精品不只是精品| 色av性av丰满av| 日韩最新在线视频| 99久久免费精品国产72精品九九| av网站大全免费| 久久精品人人做人人爽97| 夜夜躁狠狠躁日日躁av| 欧美风情在线观看| 欧美人与牛zoz0性行为| 午夜精品中文字幕| 亚洲国产精品精华液网站| 色视频在线看| 国产欧美一区二区三区视频| 欧美日本一区二区视频在线观看| 手机免费看av片| 欧美系列一区二区| 在线不卡日本v二区707| 久久亚洲综合网| 精品一区二区三区影院在线午夜| avove在线播放| 亚洲人成网站色ww在线| 99精品视频在线免费播放 | 免费在线黄色网| 亚洲精品成人免费| 99综合久久| 国产欧美在线一区| 亚洲色图在线看| 男女网站在线观看| 动漫精品视频| 欧美bbbbb| 亚洲伊人成人网| 久久亚洲电影天堂| 九九在线高清精品视频| 波多野结衣三级视频| 欧亚洲嫩模精品一区三区| 欧美xxx黑人xxx水蜜桃| 亚洲成人自拍|