天天看點

cms查詢系統(三)查詢demo體驗安裝相應的jar包到maven倉庫搭建查詢demo多樣化的實體查詢API

有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的配置檔案,改成你實際的配置

cms查詢系統(三)查詢demo體驗安裝相應的jar包到maven倉庫搭建查詢demo多樣化的實體查詢API

如果直接使用的是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&gt;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&lt;2 or b.id&gt;3

查詢條件之間如果想使用or的關系,則使用$or将他們包裹起來。

8 and or 混合查詢

上述表示的查詢條件為:

兩個b.create_time條件構成and關系,然後再與b.id條件構成or的關系,再與b.name條件構成and關系

先有一個基本的了解與認識,之後再詳細說明細節