Di DataService Studio, Anda dapat menggunakan editor kode untuk membuat API. Editor ini memungkinkan Anda menulis logika kueri menggunakan SQL dasar atau advanced. SQL advanced mendukung tag-tag umum MyBatis, seperti if, choose, when, otherwise, trim, foreach, dan where. Tag-tag ini memungkinkan Anda menerapkan logika kueri kompleks, seperti memeriksa nilai null, melakukan iterasi atas beberapa nilai, melakukan kueri tabel secara dinamis, pengurutan dinamis, dan agregasi.
Catatan penggunaan
Topik ini menyediakan contoh penulisan logika kueri dengan SQL advanced saat membuat API di editor kode. Topik ini juga menjelaskan pemetaan antara kode SQL dan Request Parameters serta Response Parameters pada halaman pembuatan API. Untuk mencegah error waktu proses, gantilah tabel, bidang, dan kondisi kueri dalam contoh dengan milik Anda sendiri.
Memberikan nilai contoh untuk parameter permintaan dan respons bersifat opsional. Jika Anda menentukan nilai contoh untuk parameter permintaan, nilai tersebut akan dimuat secara otomatis sebagai input saat Anda menguji API. Hal ini menghemat waktu karena Anda tidak perlu memasukkan nilai yang sama berulang kali. Nilai contoh hanya untuk referensi.
Untuk informasi lebih lanjut tentang cara membuat API di editor kode, lihat Create an API in script mode.
Topik ini menyediakan contoh kasus penggunaan SQL advanced (sintaksis MyBatis) berikut:
Contoh 1: Mengurutkan hasil secara kondisional
Pada contoh SQL dinamis ini, nilai parameter var menentukan urutan pengurutan.
-
Jika
varbernilai 1, kueri mengurutkan hasil menggunakanORDER BY col01. -
Jika
varbernilai 2, kueri mengurutkan hasil menggunakanORDER BY col02. -
Jika
varbernilai 3, kueri mengurutkan hasil menggunakanORDER BY col01,col02. -
Jika
varbernilai 4, kueri mengurutkan hasil menggunakanORDER BY col02,col01.
Kode berikut menunjukkan contohnya.
Gantilah nama tabel, bidang, dan kondisi lain dalam contoh ini dengan milik Anda sendiri.
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>
-
Request parameters:
Parameter
Type
Position
Required
Example value
Default
Description
var
INT
QUERY
Yes
1
1
Sort order
-
Response parameters:
Parameter
Type
Example value
col01
STRING
shortname
col02
STRING
name
Contoh 2: Melakukan kueri tabel yang berbeda secara kondisional
Contoh SQL dinamis ini melakukan kueri terhadap tabel yang berbeda berdasarkan nilai parameter var. Kueri mengembalikan data dari bidang col01.
-
Jika
varbernilai 1, kueri mengambil data dari bidang col01 pada tabel table_name01. -
Jika
varbernilai 2, kueri mengambil data dari bidang col01 pada tabel table_name02.
Kode berikut menunjukkan contohnya.
Gantilah nama tabel, bidang, dan kondisi lain dalam contoh ini dengan milik Anda sendiri.
select col01
from
<choose>
<when test='var == 1'>
table_name01
</when>
<when test='var == 2'>
table_name02
</when>
</choose>
-
Request parameters:
Parameter
Type
Position
Required
Example value
Default
var
INT
QUERY
Yes
1
1
-
Response parameters:
Parameter
Type
Example value
col01
STRING
123
Contoh 3: Menyertakan klausa WHERE secara kondisional
Contoh ini menghasilkan kondisi kueri secara dinamis berdasarkan nilai area dari koleksi list, lalu melakukan kueri data berdasarkan kondisi tersebut.
Jika list tidak null, sebuah kondisi kueri dibuat dengan nilai bidang area. Koleksi list diiterasi untuk menggabungkan elemen-elemennya dengan cara tertentu, dan data untuk bidang area_id, area, dan amount dikembalikan.
Kode berikut menunjukkan contohnya.
Gantilah nama tabel, bidang, dan kondisi lain dalam contoh ini dengan milik Anda sendiri.
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>
-
Request parameters:
Parameter
Type
Position
Required
Example value
Default
list
STRING_LIST
QUERY
Yes
Beijing,Hangzhou
Beijing
-
Response parameters:
Parameter
Type
Example value
area_id
STRING
123120
area
STRING
Beijing
amount
STRING
50