精品欧美一区二区三区在线观看 _久久久久国色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)

久久精品30| 日韩av片在线看| 激情成人在线观看| 污污视频在线免费看| 久久影院一区| 色综合激情五月| 欧美高清视频免费观看| 一区二区三区 日韩| 午夜性色福利视频| 久久综合中文| 日韩av在线一区二区| 9191国产视频| 国产白浆在线观看| 国产精品国产三级国产在线观看| 色婷婷狠狠综合| www.午夜色| 国产尤物在线观看| 国产乱码精品一区二区亚洲| 日韩欧美aaa| 精品免费一区二区三区蜜桃| 国产一级做a爱免费视频| 国产成人免费视频网站视频社区 | 一二三级黄色片| 成人亚洲性情网站www在线观看| 欧美三级午夜理伦三级在线观看| 一区二区三区日本| 91免费观看| 日日骚一区二区三区| 成人黄色91| 色8久久精品久久久久久蜜| 久久国产精品 国产精品| 日韩精品视频免费看| 国产精品x8x8一区二区| 亚洲国产另类av| 国产精品有限公司| 自拍偷拍欧美亚洲| 亚洲制服欧美另类| 在线精品亚洲一区二区不卡| 五月天久久综合网| 91禁在线观看| 久久久久中文| 91高潮在线观看| 国产毛片久久久久久久| 国产综合色在线观看| 国产精品国产自产拍高清av | 欧美成人精品激情在线视频| 欧美日韩一二三四| 欧美精品xxxxbbbb| 久操手机在线视频| 天天操天天干天天插| 日韩va亚洲va欧美va久久| 一区二区三欧美| 不卡中文字幕在线观看| 日韩精品专区| 亚洲理论在线观看| 精品欧美一区二区在线观看视频| 99热这里只有精品1| 精品一区二区免费在线观看| 欧美疯狂性受xxxxx另类| 国内毛片毛片毛片毛片毛片| 6080成人| 欧美在线播放高清精品| 韩国黄色一级大片| 天天摸天天碰天天爽天天弄| 成人免费毛片嘿嘿连载视频| 国产精品xxxxx| 黄页网站免费观看| 国产在视频线精品视频www666| 精品在线亚洲视频| 国产成人欧美在线观看| 日本黄区免费视频观看| 玖玖精品一区| 都市激情亚洲色图| 亚洲第一页在线视频| 午夜激情在线视频| 2023国产一二三区日本精品2022| 国产日韩在线一区| 日韩精品手机在线| 午夜在线精品偷拍| 欧美日韩ab片| 亚洲欧美va天堂人熟伦| 亚洲一区二区三区在线免费| 日韩免费性生活视频播放| 狠狠操精品视频| 久久99亚洲网美利坚合众国| 欧美国产一区视频在线观看| 国产精品视频免费一区| 五月婷在线视频| 亚洲国产精品高清| 久久久久久久久久久一区| 天天在线女人的天堂视频| 国产麻豆91精品| 国产精品久久久久久影视| 日韩欧美激情视频| 久久中文在线| 国产免费一区二区三区香蕉精| 一级片中文字幕| 极品av少妇一区二区| 超碰91人人草人人干| 一二三四在线观看视频| 亚洲影视一区二区三区| 日韩视频―中文字幕| a级在线免费观看| 亚洲男人都懂第一日本| 最近更新的2019中文字幕| 成年人免费观看视频网站| 色婷婷亚洲mv天堂mv在影片| 亚洲天堂av在线免费| 久久偷拍免费视频| 国产精品白丝一区二区三区| 亚洲欧洲日产国码av系列天堂| 波多野结衣久久久久| 99av国产精品欲麻豆| 久久全国免费视频| 久一视频在线观看| 国产精品v亚洲精品v日韩精品 | 黄色在线观看网站| 国产欧美日韩卡一| 91黄色在线看| 激情在线视频播放| 成人免费在线观看入口| 亚洲一区二区三区涩| av电影在线网| 国产精品成人在线观看| 日韩a∨精品日韩在线观看| www在线观看黄色| 欧美丝袜一区二区| 久久婷婷中文字幕| 在这里有精品| 色偷偷亚洲男人天堂| 国产成人无码av| 麻豆成人久久精品二区三区红| 国产精品免费在线免费| 无码精品一区二区三区在线| 一区二区三区四区国产精品| 狠狠躁狠狠躁视频专区| 国产精品欧美在线观看| 久久男人的天堂| 亚洲精品第五页| 91啪九色porn原创视频在线观看| 日韩av不卡播放| 久久日韩视频| 欧美在线视频不卡| 欧洲美一区二区三区亚洲| 亚洲欧美激情诱惑| 精品久久久久久亚洲| 免费男女羞羞的视频网站在线观看| 欧美日本韩国一区二区三区视频| 欧美一区二区三区影院| 盗摄系列偷拍视频精品tp| 久久国产精品电影| 亚洲精品77777| 成人高清视频免费观看| 日韩和欧美的一区二区| 免费电影日韩网站| 91精品国产福利在线观看 | 成年人免费高清视频| 国产成人免费在线观看不卡| 国产精品一区二区三区精品| 国产盗摄在线视频网站| 亚洲国产欧美一区| 貂蝉被到爽流白浆在线观看| 免费欧美在线视频| 国产精品福利视频| 暧暧视频在线免费观看| 亚洲国产精彩中文乱码av| ass极品国模人体欣赏| 喷水一区二区三区| 动漫美女被爆操久久久| 国产在线黄色| 亚洲成av人片www| 亚洲欧美国产日韩综合| 99视频精品视频高清免费| 91美女片黄在线观| 国产在线91| 欧美性生活一区| 免费在线观看a级片| 久久精品亚洲| 亚洲日本japanese丝袜| 99re8精品视频在线观看| 亚洲精品中文字幕av| 日本妇女毛茸茸| www.亚洲在线| 日韩成人午夜影院| 国产乱人伦精品一区| 国产va免费精品高清在线观看| aaa在线观看| 日韩一区和二区| 18啪啪污污免费网站| 久久99精品久久只有精品| 屁屁影院ccyy国产第一页| 色狼人综合干| 久久久久亚洲精品成人网小说| 天堂网www中文在线| 精品视频在线免费看| 三上悠亚影音先锋| 精品一区二区三区在线视频| 我的公把我弄高潮了视频| 秋霞影院一区| 久久九九热免费视频| 伊人成人在线观看| 国产亚洲婷婷免费| 99蜜桃臀久久久欧美精品网站| 国产精品国产| 国产91在线高潮白浆在线观看| 深夜福利在线观看直播| 夜夜夜精品看看| 能看毛片的网站| 爽好久久久欧美精品| 欧美少妇在线观看| 国产在视频线精品视频www666| 国产精品日本一区二区| 国内欧美日韩| 精品国产一区久久久| 日本中文字幕一区二区有码在线| 91.成人天堂一区| 日本高清一二三区| 久久久久久免费网| 激情婷婷综合网| 视频精品在线观看| 国产精品日韩专区| 久久久男人天堂| 亚洲欧美激情在线视频| 亚洲综合久久网| 一区二区国产盗摄色噜噜| 免费黄在线观看| 久久99久久99| www.99在线| 99精品电影| 日本黑人久久| 亚洲美女色播| 国产精品久久久av| 日韩性xxx| 欧美中文字幕在线观看| 国产在线一在线二| 日韩国产高清视频在线| 老牛影视av牛牛影视av| 狠狠躁夜夜躁人人爽天天天天97 | 日产精品一区二区| 免费h精品视频在线播放| 九色成人搞黄网站| 欧美在线视频观看免费网站| www.色在线| 性欧美xxxx交| av一本在线| 国产一区二区三区视频免费| 国产一区二区波多野结衣| 欧美这里有精品| 五月婷婷丁香在线| 亚洲精品第一国产综合野| 亚洲天堂一级片| 亚洲日本在线视频观看| 800av在线播放| 老司机免费视频一区二区| 午夜视频在线瓜伦| 狂野欧美性猛交xxxx巴西| 欧美aⅴ在线观看| 久久三级视频| 无需播放器的av| 久久66热re国产| 欧美一级免费在线| 国产白丝精品91爽爽久久| 欧美精品成人网| 日本成人在线电影网| 欧美激情第3页| 国产精品婷婷| 国产一二三四区在线观看| 一区二区三区中文| youjizz.com在线观看| 亚洲视频精品| 欧美牲交a欧美牲交aⅴ免费下载| 久热综合在线亚洲精品| 视频在线观看免费高清| 一区二区三区高清视频在线观看| 成人综合视频在线| 手机精品视频在线观看| 亚洲一区二区在线视频观看| 国产a精品视频| 毛片网站免费观看| 国产不卡在线一区| 30一40一50老女人毛片| 国产精品网站在线| 免费一级片视频| 色呦呦国产精品| 一二三四区在线| 欧美在线影院一区二区| 国产chinasex对白videos麻豆| 精品成人a区在线观看| 国产女人18毛片18精品| 欧美性感一区二区三区| 国产情侣av在线| 日韩av有码在线| 欧美精品videos另类| 在线亚洲午夜片av大片| 欧美捆绑视频| 亚洲国产成人91精品| 东热在线免费视频| 亚洲人成电影网站色…| 大地资源网3页在线观看| 最近2019免费中文字幕视频三| 女人天堂av在线播放| 国产精品91久久| 永久免费精品视频| 午夜精品一区二区三区四区| 亚洲一级电影| 高潮一区二区三区| 久久综合资源网| 国产小视频在线观看免费| 在线观看免费一区| 婷婷在线免费视频| 久久精品这里热有精品| 欧美成人ⅴideosxxxxx| 98国产高清一区| 久久国产亚洲精品| 日韩免费毛片视频| 成人h动漫精品一区二区| 午夜激情福利电影| 《视频一区视频二区| av网站中文字幕| 在线视频一区二区三区| 国产 日韩 欧美 综合| 久久久www成人免费精品| 日韩不卡免费高清视频| 精品欧美一区二区在线观看视频| 午夜欧美精品久久久久久久| 青草网在线观看| 久久se精品一区二区| 实拍女处破www免费看| 亚洲成a人v欧美综合天堂| 国产视频在线观看视频| www日韩欧美| 欧美黄色三级| 91午夜在线播放| 色综合咪咪久久网| 不卡av免费在线| 91美女片黄在线观看91美女| 国产无遮挡又黄又爽又色| 日韩亚洲欧美成人一区| 国产91在线视频蝌蚪| 成人免费在线网址| 大陆精大陆国产国语精品| 欧美一级黄色录像片| 激情伊人五月天久久综合| 无码人妻精品一区二区三| 久久香蕉国产线看观看99| 国产午夜久久久| 亚洲国产成人91精品| 欧美freesex黑人又粗又大| 精品国产福利| 亚洲专区在线| 午夜理伦三级做爰电影| 色综合久久88色综合天天6| 丝袜视频国产在线播放| 热久久这里只有精品| 欧美军人男男激情gay| www亚洲成人| 亚洲色图另类专区| www.久久综合| 国产小视频91| 成人影院在线免费观看| 国产日韩久久| 四虎国产精品免费观看| 中文字幕 日韩 欧美| 一区二区三区在线观看网站| 黄频网站在线观看| 97av在线视频免费播放| 国产成人精品999在线观看| 天天操天天摸天天爽| 亚洲欧洲国产日韩| www.黄色片| 欧美在线激情网| 成人av资源电影网站| 男人用嘴添女人下身免费视频| 99久久99久久精品国产片果冻 | 欧美激情小视频| 丁香久久综合| 大桥未久一区二区三区| 丁香网亚洲国际| 69xxxx国产| 日韩大片在线观看视频| av在线不卡精品| 亚洲激情免费视频| ww亚洲ww在线观看国产| 亚洲一线在线观看| 久久久伊人日本| 欧美码中文字幕在线| 俄罗斯女人裸体性做爰| 欧美午夜激情视频| 久久久久久国产精品免费无遮挡| 国产在线观看一区| 卡一卡二国产精品 | japanese在线观看| 亚洲理论在线观看| 免费在线稳定资源站| 成人黄色在线免费| 国产欧美日韩综合一区在线播放| 久久中文字幕精品| 亚洲第一免费网站| 国产成+人+综合+亚洲欧美| www.九色.com|