有2個項目的jar包需要安裝,分别是:
search-sqlparams-1.3.0.jar 主要用于查詢參數的解析
search-core-1.3.0.jar 整體的查詢流程體系,需要使用上述參數解析包
上述兩個項目位址分别如下:
<a href="https://git.oschina.net/pingpangkuangmo/search-sqlparams">search-sqlparams</a>
<a href="https://git.oschina.net/pingpangkuangmo/search-core">search-core</a>
以search-sqlparams-1.3.0.jar為例來說下安裝步驟:
第一步:fork search-sqlparams 項目(這兩個項目都是maven環境),把項目源代碼拉取到本地
第二步:在該項目的目錄下,執行 mvn install 指令,就會将該項目編譯并且安裝jar包到maven倉庫中
第三步:在該項目的目錄下,執行 mvn source:jar install 指令,就會将該項目的源碼包安裝到maven倉庫中
對于search-core項目同理,執行上述步驟,search-core一定要在search-sqlparams之後執行
這樣操作,主要是友善自己去檢視和修改源碼
如果不想關心項目的源碼,想直接擷取jar包和源碼包,下載下傳位址如下:
<a href="https://git.oschina.net/pingpangkuangmo/blog/tree/master/2015-4/%e9%99%84%e4%bb%b6">search-sqlparams-1.3.0.jar和search-core-1.3.0.jar</a>
下載下傳查詢demo工程,使用ide導入demo工程。工程位址如下:
<a href="https://git.oschina.net/pingpangkuangmo/search-demo">search-demo工程</a>
第一步:準備資料庫和資料
demo項目中的類路徑下,有一個search.sql檔案,連上mysql資料庫執行該sql檔案,或者直接拷貝檔案裡面的内容,到mysql用戶端直接執行這些内容。會建立一個search資料庫,裡面有a、b、c、d四張表和對應的資料
第二步:修改項目中jdbc.properties的配置檔案,改成你實際的配置
如果直接使用的是jar包,沒有安裝到maven倉庫,則需要去掉demo工程中的以下依賴
然後将jar包直接放置到demo工程的classpath路徑下
對實體提供多樣化的查詢api,是有一定的使用場景的,它适用于那些簡單的查詢實體間父子關系的場景。
主要功能:
1 對select語句查詢出的平鋪的結果展示進行聚合,使其具有父子關系
2 對select語句查詢出的結果進行格式化,如true、false改為是、否
3 對于查詢條件可以随意增添,支援類似mongodb的and or
目前資料庫中有4張實體表,分别是a、b、c、d,他們的關系是:
a:b=1:n
b:c=1:n
c:d=1:n
字段内容分别如下:
分成2部分來說,查詢實體間的關系和查詢條件,以下請求都是post請求,請求體為json形式的字元串,同時content-type類型為application/json。傳回的資料都是list類型的,是以下面就隻顯示一個資料的格式
1 查詢b實體的内容
查詢傳回的資料格式如下:
2 查詢b實體的内容,同時想知道其父實體a的内容
查詢傳回的資料格式如下,b實體中有一個a屬性,屬性值為a實體的内容:
其中tablespath也可以不寫,使用預設配置,但是b left join a和 b join a的結果是不一樣的,是以使用者可以根據需求來自行配置。支援join 、left join 、right join
3 查詢b實體的内容,同時想知道它所包含的所有c實體
查詢傳回的資料格式如下,b實體中有一個cs屬性,該屬性是c實體的一個集合
tablespath同上。
4 查詢b實體的内容,同時想知道它的父實體a和它所包含的所有的c實體的内容
傳回的資料格式如下,b實體有一個a屬性,屬性類型為map,值為a實體的内容;b實體有一個cs屬性,屬性類型為list,值為c實體的集合
其中tablespath可以随意寫,隻要真實邏輯正确,不在乎順序,如
5 查詢b實體的内容,同時想知道它的父實體a和它所包含的所有的c實體的内容,以及它所包含的所有d實體的内容
同理,在上一個格式的基礎上,添加了一個ds的屬性,該屬性是d實體的集合,下面資料太長就省去了集合中的一部分實體
1 最簡單的查詢條件
查詢條件為b.id=1。下面的查詢就隻寫params中的内容
2 一般查詢
查詢條件為b.id>1
3 in not in 查詢
4 時間查詢
5 like 查詢
其中%用法和資料庫保持一緻
6 and 查詢
表示要查詢的條件為b.name like a 同時a.id=1。
這時候tablespath為b和a實體間的關系,params中的查詢條件就可以随意的指定a、b中要查詢的字段。
查詢條件之間預設是and的關系
7 or 查詢
上述表示的查詢條件為 b.id<2 or b.id>3
查詢條件之間如果想使用or的關系,則使用$or将他們包裹起來。
8 and or 混合查詢
上述表示的查詢條件為:
兩個b.create_time條件構成and關系,然後再與b.id條件構成or的關系,再與b.name條件構成and關系
先有一個基本的了解與認識,之後再詳細說明細節