CRUD dengan DSL Query: insert, select, update, delete
Lakukan semua operasi CRUD menggunakan DSL kueri aman-tipe milik Exposed.
CRUD dengan DSL Query: insert, select, update, delete adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.
Ikhtisar DSL Kueri
DSL Kueri Exposed memungkinkan Anda menulis operasi SQL yang aman tipe menggunakan fungsi Kotlin. Semua operasi dilakukan di dalam blok transaction { }. Tidak ada string ajaib — referensi kolom adalah properti Kotlin, sehingga kesalahan ketik terdeteksi saat kompilasi.
Penyisipan
Gunakan Table.insert { } untuk menambahkan baris. Lambda menerima InsertStatement dan Anda menetapkan nilai kolom menggunakan operator [column]:
transaction {
Users.insert {
it[Users.name] = "Alice"
it[Users.email] = "alice@example.com"
it[Users.age] = 30
}
}Menyisipkan dan Mendapatkan ID yang Dibuat
Gunakan insertAndGetId { } pada IdTable untuk mengambil kunci utama yang dibuat otomatis setelah penyisipan:
val newId: Long = transaction {
Users.insertAndGetId {
it[Users.name] = "Bob"
it[Users.email] = "bob@example.com"
}.value
}Penyisipan dalam Batch
Gunakan batchInsert(list) { item -> ... } untuk penyisipan banyak baris secara efisien. Exposed membungkusnya dalam satu pernyataan ter siapkan:
val newUsers = listOf("Carol" to "carol@e.com", "Dave" to "dave@e.com")
transaction {
Users.batchInsert(newUsers) { (name, email) ->
this[Users.name] = name
this[Users.email] = email
}
}Memilih Semua Baris
Gunakan Table.selectAll() untuk mengambil setiap baris. Ulangi hasilnya sebagai urutan objek ResultRow; akses nilai kolom melalui row[Column]:
transaction {
Users.selectAll().forEach { row ->
println("${row[Users.id]}: ${row[Users.name]}")
}
}Memilih dengan Klausa Where
Rangkaikan .where { condition } (Exposed 0.46+) atau .select { condition } untuk menyaring baris. Kondisi menggunakan operator yang dioverload (eq, like, greater, dan sebagainya):
transaction {
Users.selectAll()
.where { Users.age greater 25 }
.forEach { println(it[Users.name]) }
}Memilih Kolom Tertentu
Teruskan daftar kolom ke .select(col1, col2) untuk mengambil hanya kolom tersebut — setara dengan SELECT col1, col2 FROM ...:
transaction {
Users.select(Users.name, Users.email)
.where { Users.age lessEq 30 }
.map { it[Users.name] to it[Users.email] }
.forEach(::println)
}Pembaruan
Gunakan Table.update({ condition }) { } untuk mengubah baris yang ada. Lambda bagian dalam menerima UpdateStatement; gunakan [column] untuk menetapkan nilai baru:
transaction {
Users.update({ Users.id eq 1L }) {
it[Users.name] = "Alice Updated"
it[Users.age] = 31
}
}Penghapusan
Gunakan Table.deleteWhere { condition } untuk menghapus baris yang cocok dengan predikat. Fungsi ini mengembalikan jumlah baris yang dihapus:
transaction {
val deleted = Users.deleteWhere { Users.id eq 5L }
println("Deleted $deleted rows")
}Pengurutan dan Pembatasan
Rangkaikan .orderBy(column to SortOrder.ASC) dan .limit(n) (dengan offset opsional) untuk mengurutkan dan memberi nomor halaman pada hasil:
transaction {
Users.selectAll()
.orderBy(Users.name to SortOrder.ASC)
.limit(10, offset = 20)
.map { it[Users.name] }
.forEach(::println)
}Agregasi dan Penghitungan
Gunakan fungsi agregasi SQL standar melalui operator kolom Exposed: Users.id.count(), Users.age.avg(), Users.age.max(), dan sebagainya:
transaction {
val total = Users.selectAll().count()
println("Total users: $total")
}Pemeriksaan Singkat
Fungsi Exposed mana yang mengembalikan kunci utama yang dibuat otomatis setelah menyisipkan baris ke dalam IdTable?
Ringkasan: CRUD dengan DSL Kueri
Poin-poin penting:
insert { }— menambahkan baris;insertAndGetId { }— menambahkan baris dan mendapatkan PKselectAll().where { }— melakukan kueri dengan filter; rangkai dengan.orderBy(),.limit()update({ condition }) { }— mengubah baris;deleteWhere { }— menghapus baris- Semua operasi dijalankan di dalam
transaction { } - Referensi kolom aman saat kompilasi — tidak ada nama kolom berupa string
Belajar Kotlin dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Pertanyaan yang Sering Diajukan
Apakah pelajaran “CRUD dengan DSL Query: insert, select, update, delete” gratis?
Ya — teks lengkap “CRUD dengan DSL Query: insert, select, update, delete” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “CRUD dengan DSL Query: insert, select, update, delete”?
Lakukan semua operasi CRUD menggunakan DSL kueri aman-tipe milik Exposed. Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Kotlin Academy?
Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “CRUD dengan DSL Query: insert, select, update, delete” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?
Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Penyiapan Exposed: Koneksi Basis Data dan DSL Transaksi
- Mendefinisikan Tabel dengan DSL Table
- CRUD dengan DSL Query: insert, select, update, delete
- DAO Exposed: Class Entitas dan Relasi