En DataService Studio, puede utilizar el editor de código para crear APIs. Este editor le permite escribir la lógica de consulta mediante SQL básico o avanzado. El SQL avanzado admite etiquetas comunes de MyBatis, como if, choose, when, otherwise, trim, foreach y where. Estas etiquetas permiten implementar lógicas de consulta complejas, como la comprobación de valores nulos, la iteración sobre varios valores, consultas dinámicas a tablas, ordenamiento dinámico y agregaciones.
Notas de uso
Este tema proporciona ejemplos sobre cómo escribir lógica de consulta con SQL avanzado al crear una API en el editor de código. También explica la relación entre el código SQL y los Request Parameters y Response Parameters en la página de creación de la API. Para evitar errores en tiempo de ejecución, reemplace las tablas, los campos y las condiciones de consulta de los ejemplos por los suyos propios.
Proporcionar valores de ejemplo para los parámetros de solicitud y respuesta es opcional. Si especifica un valor de ejemplo para un parámetro de solicitud, este se carga automáticamente como entrada cuando prueba la API. Esto le evita tener que ingresar los mismos valores en cada prueba. Los valores de ejemplo son solo de referencia.
Para obtener más información sobre cómo crear una API en el editor de código, consulte Create an API in script mode.
Este tema presenta ejemplos de los siguientes casos de uso de SQL avanzado (sintaxis MyBatis):
Ejemplo 1: Ordenar resultados condicionalmente
En este ejemplo de SQL dinámico, el valor del parámetro var determina el orden de clasificación.
Si
vares 1, la consulta ordena los resultados medianteORDER BY col01.Si
vares 2, la consulta ordena los resultados medianteORDER BY col02.Si
vares 3, la consulta ordena los resultados medianteORDER BY col01,col02.Si
vares 4, la consulta ordena los resultados medianteORDER BY col02,col01.
A continuación se muestra un ejemplo de código.
Reemplace el nombre de la tabla, los campos y otras condiciones de este ejemplo por los suyos propios.
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>
-
Parámetros de solicitud:
Parámetro
Tipo
Posición
Obligatorio
Valor de ejemplo
Predeterminado
Descripción
var
INT
QUERY
Sí
1
1
Orden de clasificación
-
Parámetros de respuesta:
Parámetro
Tipo
Valor de ejemplo
col01
STRING
shortname
col02
STRING
name
Ejemplo 2: Consultar diferentes tablas condicionalmente
Este ejemplo de SQL dinámico consulta distintas tablas según el valor del parámetro var. La consulta devuelve datos del campo col01.
Si
vares 1, la consulta recupera datos del campo col01 de la tabla table_name01.Si
vares 2, la consulta recupera datos del campo col01 de la tabla table_name02.
A continuación se muestra un ejemplo de código.
Reemplace el nombre de la tabla, los campos y otras condiciones de este ejemplo por los suyos propios.
select col01
from
<choose>
<when test='var == 1'>
table_name01
</when>
<when test='var == 2'>
table_name02
</when>
</choose>
-
Parámetros de solicitud:
Parámetro
Tipo
Posición
Obligatorio
Valor de ejemplo
Predeterminado
var
INT
QUERY
Sí
1
1
-
Parámetros de respuesta:
Parámetro
Tipo
Valor de ejemplo
col01
STRING
123
Ejemplo 3: Incluir una cláusula WHERE condicionalmente
Este ejemplo genera dinámicamente condiciones de consulta basadas en el valor area de la colección list, y consulta los datos según dichas condiciones.
Si list no es null, se genera una condición de consulta con el valor del campo area, se itera sobre la colección list para concatenar sus elementos de una manera específica, y se devuelven los datos correspondientes a los campos area_id, area y amount.
A continuación se muestra un ejemplo de código.
Reemplace el nombre de la tabla, los campos y otras condiciones de este ejemplo por los suyos propios.
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>
-
Parámetros de solicitud:
Parámetro
Tipo
Posición
Obligatorio
Valor de ejemplo
Predeterminado
list
STRING_LIST
QUERY
Sí
Beijing,Hangzhou
Beijing
-
Parámetros de respuesta:
Parámetro
Tipo
Valor de ejemplo
area_id
STRING
123120
area
STRING
Beijing
amount
STRING
50