数据服务支持通过脚本模式来生成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