高级 SQL(Mybatis 语法)示例
数据服务支持通过脚本模式来生成 API,脚本模式下支持基础 SQL 和高级 SQL,其中高级 SQL 涵盖了 Mybatis 语法的常见标签类型:if、choose、when、otherwise、trim、foreach、where,您可以借助标签语法来灵活实现空值校验、多值遍历、动态查表、动态排序及聚合等复杂查询逻辑。
同时,高级 SQL 兼容部分 Mybatis 语法,故在使用 mybatis 语法时,注意 "$" 和 “#”符号的使用。本文为您介绍常见场景的代码示例。
基础 SQL 示例:
selectcountry, //select字段为API的返回字段name as username, //当存在字段别名时,别名作为返回字段max(age) as max_age //支持数据库函数fromdb_name.table_name //需要查询的库表wherehobby=#{hobby} //hobby对应API请求参数,格式是#{请求参数}group by country,name
说明:
1. 请参考示例规范输入 SQL,输入完成后, SQL 会自己解析为 API 请求响应参数。
2. 参数完成解析后,请不全参数相关定义,以便生成完整的 API 文档给调用方使用。
3. SQL 支持多表连接,编写时,请注意所选择数据库的语法。
高级 SQL 示例:
示例1:通过条件控制返回结果按照不同的表字段进行排序
SELECTcol_a AS col_a,col_b AS col_b,col_c AS col_cFROM 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:通过条件控制查询不同的数据表
selectcol_a as col_a,col_b as col_b,col_c as col_cfrom<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 查询条件是否保留,即:当请求参数非必填时的查询逻辑
selectcol_a as col_a,col_b as col_b,col_c as col_cfrom 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 解析 < 、>、<=、>= 时会出错,这时应该使用转义写法。
< | <= | > | >= | & | ' | " |
< | <= | > | >= | & | ' | " |