資料服務支援通過指令碼模式來產生API,指令碼模式可使用基礎SQL或進階SQL文法編寫查詢邏輯。其中,進階SQL涵蓋了Mybatis文法的常見標籤類型(例如,if、choose、when、otherwise、trim、foreach、where),您可以藉助標籤文法來靈活實現空值校正、多值遍曆、動態查表、動態排序及彙總等複雜查詢邏輯。
使用說明
本文主要為您介紹使用指令碼模式產生API時,通過進階SQL編寫查詢邏輯的相關樣本,以及SQL代碼與產生API介面的請求參數、返回參數的對應關係。為避免實際使用時運行失敗,請將查詢的表、欄位、相關查詢條件替換為您實際使用的內容。
產生API介面中,請求參數和返回參數的樣本值為非必填。若您每次測試API,均使用同一套值來測試,則填寫樣本值後,測試API時會自動載入樣本值作為請求參數的輸入值,避免每次重新輸入。樣本值僅用於參考。
通過指令碼模式產生API的相關操作,請參見通過指令碼模式產生API。
本文提供的進階SQL(Mybatis文法)情境樣本如下:
樣本1:通過條件控制返回結果按照不同的表欄位進行排序
樣本使用動態SQL查詢語句,通過var
的值決定使用哪種排序方式。
當
var
的值為1時,使用order by col01
對結果進行排序。當
var
的值為2時,使用order by col02
對結果進行排序。當
var
的值為3時,使用order by col01,col02
對結果進行排序。當
var
的值為4時,使用order by col02,col01
對結果進行排序。
SQL程式碼範例如下。
使用時,具體的表名、欄位及其他條件,請根據實際情況進行替換和補充。
select col01,col02
from table_name
<choose>
<when test='var == 1'>
order by col01
</when>
<when test='var == 2'>
order by col02
</when>
<when test='var == 3'>
order by col01,col02
</when>
<when test='var == 4'>
order by col02,col01
</when>
</choose>
使用指令碼模式產生API的介面參數配置樣本如下。您可根據需要替換樣本值。
請求參數:
參數名稱
參數類型
參數位置
是否必填
樣本值
預設值
描述
var
INT
QUERY
是
1
1
排序方式
返回參數:
參數名稱
參數類型
樣本值
col01
STRING
shortname
col02
STRING
name
樣本2:通過條件控制查詢不同的資料表
樣本使用動態SQL查詢語句,通過var
的不同取值控制查詢不同的表,並返回col01
欄位的資料。
當
var
的值為1時,查詢table_name01表的col01欄位。當
var
的值為2時,查詢table_name02表的col01欄位。
SQL程式碼範例如下。
使用時,具體的表名、欄位及其他條件,請根據實際情況進行替換和補充。
select col01
from
<choose>
<when test='var == 1'>
table_name01
</when>
<when test='var == 2'>
table_name02
</when>
</choose>
使用指令碼模式產生API的介面參數配置樣本如下。您可根據需要替換樣本值。
請求參數:
參數名稱
參數類型
參數位置
是否必填
樣本值
預設值
var
INT
QUERY
是
1
1
返回參數:
參數名稱
參數類型
樣本值
col01
STRING
123
樣本3:通過判斷欄位值是否為空白來控制where查詢條件是否保留
樣本根據list
集合中的area
值,動態產生查詢條件,並根據條件查詢資料。
若list
不為null
,則會產生一個包含area
欄位值的查詢條件,並遍曆list
集合,將集合中的每個元素按照指定方式拼接,返回area_id
、area
和amount
欄位的資料。
SQL程式碼範例如下。
使用時,具體的表名、欄位及其他條件,請根據實際情況進行替換和補充。
SELECT area_id, area, amount
FROM table_name
<where>
<if test='list!=null'>
area in
<foreach collection="list" open="(" close=")" separator="," item="area">
${area}
</foreach>
</if>
</where>
使用指令碼模式產生API的介面參數配置樣本如下。您可根據需要替換樣本值。
請求參數:
參數名稱
參數類型
參數位置
是否必填
樣本值
預設值
list
STRING_LIST
QUERY
是
北京市,杭州市
北京市
返回參數:
參數名稱
參數類型
樣本值
area_id
STRING
123120
area
STRING
北京市
amount
STRING
50