脚本模式高级 SQL 使用指引

最近更新时间:2024-04-26 21:21:41

我的收藏

高级 SQL(Mybatis 语法)示例

数据服务支持通过脚本模式来生成 API,脚本模式下支持基础 SQL 和高级 SQL,其中高级 SQL 涵盖了 Mybatis 语法的常见标签类型:if、choose、when、otherwise、trim、foreach、where,您可以借助标签语法来灵活实现空值校验、多值遍历、动态查表、动态排序及聚合等复杂查询逻辑。
同时,高级 SQL 兼容部分 Mybatis 语法,故在使用 mybatis 语法时,注意 "$" 和 “#”符号的使用。本文为您介绍常见场景的代码示例。

基础 SQL 示例:

select
country, //select字段为API的返回字段
name as username, //当存在字段别名时,别名作为返回字段
max(age) as max_age //支持数据库函数
from
db_name.table_name //需要查询的库表
where
hobby=#{hobby} //hobby对应API请求参数,格式是#{请求参数}
group by country,name
说明:
1. 请参考示例规范输入 SQL,输入完成后, SQL 会自己解析为 API 请求响应参数。
2. 参数完成解析后,请不全参数相关定义,以便生成完整的 API 文档给调用方使用。
3. SQL 支持多表连接,编写时,请注意所选择数据库的语法。

高级 SQL 示例:

示例1:通过条件控制返回结果按照不同的表字段进行排序

SELECT
col_a AS col_a,
col_b AS col_b,
col_c AS col_c
FROM db_name.table_name
<choose>
<when test='var == 1'>
ORDER BY col_a
</when>
<when test='var == 2'>
ORDER BY col_b
</when>
<when test='var == 3'>
ORDER BY col_a, col_c
</when>
<when test='var == 4'>
ORDER BY col_c, col_a
</when>
</choose>
请求参数:
参数名
参数类型
参数位置
操作符
是否必填
默认值
示例值
描述
var
String
Query
=
1
1
排序参数
返回参数:
参数名
绑定字段
参数类型
示例值
描述
col_a
col_a
String
abc
字段 a
col_b
col_b
String
abc
字段 b
col_c
col_c
String
abc
字段 c

示例2:通过条件控制查询不同的数据表

select
col_a as col_a,
col_b as col_b,
col_c as col_c
from
<choose>
<when test='var == 1'>
db_name.table_name_01
</when>
<when test='var == 2'>
db_name.table_name_02
</when>
</choose>
请求参数:
参数名
参数类型
参数位置
操作符
是否必填
默认值
示例值
描述
var
String
Query
=
1
1
查询表参数: 1、db_name.table_name_01
2、db_name.table_name_02
返回参数:
参数名
绑定字段
参数类型
示例值
描述
col_a
col_a
String
abc
字段 a
col_b
col_b
String
abc
字段 b
col_c
col_c
String
abc
字段 c

示例3:通过判断字段值是否为空来控制 where 查询条件是否保留,即:当请求参数非必填时的查询逻辑

select
col_a as col_a,
col_b as col_b,
col_c as col_c
from db_name.table_name_01
<where>
<if test='list!=null'>
col_a in
<foreach collection="list" open="(" close=")" separator="," item="col_a_item">
#{col_a_item}
</foreach>
</if>
</where>
请求参数:
参数名
参数类型
参数位置
操作符
是否必填
默认值
示例值
描述
list
StringList
Query
=
a,b,c
a,b,c
col_a 入参集合
响应参数:
参数名
绑定字段
参数类型
示例值
描述
col_a
col_a
String
abc
字段 a
col_b
col_b
String
abc
字段 b
col_c
col_c
String
abc
字段 c

特殊字段需转义处理

mybatis 中 SQL 写在 xml 文件中,而 xml 解析 < 、>、<=、>= 时会出错,这时应该使用转义写法。
<
<=
>
>=
&
'
"
&lt;
&lt;=
&gt;
&gt;=
&amp;
&apos;
&quot;