Kotlin Academy · Pelajaran

CRUD dengan DSL Query: insert, select, update, delete

Lakukan semua operasi CRUD menggunakan DSL kueri aman-tipe milik Exposed.

Pelajaran 3 dari 413 langkah

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 PK
  • selectAll().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
Gratis untuk memulai

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

  1. Penyiapan Exposed: Koneksi Basis Data dan DSL Transaksi
  2. Mendefinisikan Tabel dengan DSL Table
  3. CRUD dengan DSL Query: insert, select, update, delete
  4. DAO Exposed: Class Entitas dan Relasi
← Kembali ke Kotlin Academy