簡單介紹 (部分口水話,部分來自網絡,代碼永遠自產)
使用過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對字符串支持的查詢條件頗多,但對於其他類型,僅支持精確匹配