數據服務支持通過腳本模式來生成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