Spring Data之Example<>


簡單CRUD之Example動態查詢

簡單介紹 (部分口水話,部分來自網絡,代碼永遠自產)

使用過Spring全家桶的各位大佬應該都知道,Spring Data這個是Spring對持久層框架的封裝,比如Spring Data Redis、Spring Data Mongo等,今天我們來學習一下他的動態查詢Example

Example的官方介紹

Example是一個按照實列查詢的技術,稱為QBE,他允許我們創建動態的查詢條件,持久層的框架我們常用的MyBatis的通用Mapper,Hibenate(好久沒用過了),都支持這種映射關系,所以Spring Data也必須得支持這種提高效率的功能,

他可以實現我們不用寫數據庫的sql語句就可以查詢到我們想要的數據,太復雜的除外...

Example 的組成

  • 條件實列:第一個當然就是我們封裝條件的實列了,一般由前端發過來,我們可對其封裝

  • ExampleMatcher:對於條件實列中某些字段的匹配條件的設置,比如包含,以...開始/結束等

  • Example:由條件實列和ExampleMatcher組成,用於查詢

適用范圍

  • 使用一組靜態或者動態條件插敘數據庫

  • 頻繁重構域對象,而不必擔心破壞現有查詢

  • 獨立於地測光輸出儲存IP工作(不明白)

按列查詢(QBE)的限制

不支持嵌套或者分組的屬性約束

僅支持字符串的開始/包含/結束/正則以及其他屬性的精確匹配,也就是說對String類型的查詢支持力度大

自產代碼

上面這段代碼我在其中的注釋已經寫的很明白,

我們對條件實列封裝了是哪個條件,有兩個是精確匹配,有一個單獨設置了包含查詢,

最后我們還對查詢結果進行分頁查詢,條件匹配器的的API

 

而且在1.8y引入了Lamda表達式后,還進行了代碼簡化:

簡單總結

對於Example可以快速構建一一個動態查詢,並且根據Pageable可以快速實現分頁插敘功能

Exampled對字符串支持的查詢條件頗多,但對於其他類型,僅支持精確匹配

如果想要復雜一點的查詢,我們還得繼承另一個接口,用另一個API,今天先寫到這兒,后面用到再寫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM