全部产品
Search
文档中心

大数据开发治理平台 DataWorks:脚本模式:高级SQL(Mybatis语法)示例

更新时间:Jan 18, 2024

数据服务支持通过脚本模式来生成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的界面参数配置示例如下。您可根据需要替换示例值。image.png

  • 请求参数:

    参数名称

    参数类型

    参数位置

    是否必填

    示例值

    默认值

    描述

    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的界面参数配置示例如下。您可根据需要替换示例值。image.png

  • 请求参数:

    参数名称

    参数类型

    参数位置

    是否必填

    示例值

    默认值

    var

    INT

    QUERY

    1

    1

  • 返回参数:

    参数名称

    参数类型

    示例值

    col01

    STRING

    123

示例3:通过判断字段值是否为空来控制where查询条件是否保留

示例根据list集合中的area值,动态生成查询条件,并根据条件查询数据。

list不为null,则会生成一个包含area字段值的查询条件,并遍历list集合,将集合中的每个元素按照指定方式拼接,返回area_idareaamount字段的数据。

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的界面参数配置示例如下。您可根据需要替换示例值。image.png

  • 请求参数:

    参数名称

    参数类型

    参数位置

    是否必填

    示例值

    默认值

    list

    STRING_LIST

    QUERY

    北京市,杭州市

    北京市

  • 返回参数:

    参数名称

    参数类型

    示例值

    area_id

    STRING

    123120

    area

    STRING

    北京市

    amount

    STRING

    50