Kotlin Academy · Ders

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

Tüm CRUD işlemlerini Exposed'in tür güvenli sorgu DSL'ini kullanarak gerçekleştirin.

3. ders / 413 adım

Query DSL ile CRUD: insert, select, update, delete, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

Sorgu DSL'sine Genel Bakış

Exposed'ın Sorgu DSL'si, Kotlin işlevlerini kullanarak tür güvenli SQL işlemleri yazmanızı sağlar. Tüm işlemler bir transaction { } bloğu içinde gerçekleştirilir. Sihirli dizeler yoktur — sütun başvuruları Kotlin özellikleridir; bu nedenle yazım hataları derleme zamanında yakalanır.

Ekleme

Bir satır eklemek için Table.insert { } kullanın. Lambda, bir InsertStatement alır ve sütun değerlerini [column] işleciyle ayarlarsınız:

transaction {
    Users.insert {
        it[Users.name]  = "Alice"
        it[Users.email] = "alice@example.com"
        it[Users.age]   = 30
    }
}

Ekleme ve Oluşturulan Kimliği Alma

Ekleme işleminden sonra otomatik oluşturulan birincil anahtarı almak için bir IdTable üzerinde insertAndGetId { } kullanın:

val newId: Long = transaction {
    Users.insertAndGetId {
        it[Users.name]  = "Bob"
        it[Users.email] = "bob@example.com"
    }.value
}

Toplu Ekleme

Birden çok satırı verimli şekilde eklemek için batchInsert(list) { item -> ... } kullanın. Exposed bunları tek bir hazırlanmış ifade içinde toplar:

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
    }
}

Tüm Satırları Seçme

Her satırı almak için Table.selectAll() kullanın. Sonucu ResultRow nesnelerinden oluşan bir dizi olarak yineleyin; sütun değerlerine row[Column] aracılığıyla erişin:

transaction {
    Users.selectAll().forEach { row ->
        println("${row[Users.id]}: ${row[Users.name]}")
    }
}

Where Koşuluyla Seçme

Satırları filtrelemek için .where { condition } (Exposed 0.46+) veya .select { condition } zincirini kullanın. Koşullar işleç aşırı yüklemelerini (eq, like, greater vb.) kullanır:

transaction {
    Users.selectAll()
        .where { Users.age greater 25 }
        .forEach { println(it[Users.name]) }
}

Belirli Sütunları Seçme

Yalnızca bu sütunları almak için .select(col1, col2) işlevine bir sütun listesi aktarın — bu, SELECT col1, col2 FROM ... ifadesine denktir:

transaction {
    Users.select(Users.name, Users.email)
        .where { Users.age lessEq 30 }
        .map { it[Users.name] to it[Users.email] }
        .forEach(::println)
}

Güncelleme

Mevcut satırları değiştirmek için Table.update({ condition }) { } kullanın. İçteki lambda bir UpdateStatement alır; yeni değerleri ayarlamak için [column] kullanın:

transaction {
    Users.update({ Users.id eq 1L }) {
        it[Users.name] = "Alice Updated"
        it[Users.age]  = 31
    }
}

Silme

Koşulla eşleşen satırları kaldırmak için Table.deleteWhere { condition } kullanın. Silinen satırların sayısını döndürür:

transaction {
    val deleted = Users.deleteWhere { Users.id eq 5L }
    println("Deleted $deleted rows")
}

Sıralama ve Sınırlandırma

Sonuçları sıralamak ve sayfalara bölmek için .orderBy(column to SortOrder.ASC) ile .limit(n) zincirini kullanın (offset isteğe bağlıdır):

transaction {
    Users.selectAll()
        .orderBy(Users.name to SortOrder.ASC)
        .limit(10, offset = 20)
        .map { it[Users.name] }
        .forEach(::println)
}

Toplamalar ve Sayma

Exposed'ın sütun işleçleri aracılığıyla standart SQL toplama işlevlerini kullanın: Users.id.count(), Users.age.avg(), Users.age.max() vb.:

transaction {
    val total = Users.selectAll().count()
    println("Total users: $total")
}

Hızlı Kontrol

Bir IdTable içine satır ekledikten sonra otomatik oluşturulan birincil anahtarı hangi Exposed işlevi döndürür?

Özet: Sorgu DSL'iyle CRUD

Önemli çıkarımlar:

  • insert { } — satır ekler; insertAndGetId { } — satır ekler ve PK değerini alır
  • selectAll().where { } — filtreyle sorgular; .orderBy() ve .limit() zincirlenebilir
  • update({ condition }) { } — satırları değiştirir; deleteWhere { } — satırları kaldırır
  • Tüm işlemler transaction { } içinde çalışır
  • Sütun başvuruları derleme zamanında güvenlidir; dize biçiminde sütun adları kullanılamaz
Başlamak ücretsiz

Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
51
Dersler
203

Sıkça Sorulan Sorular

“Query DSL ile CRUD: insert, select, update, delete” dersi ücretsiz mi?

Evet — “Query DSL ile CRUD: insert, select, update, delete” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“Query DSL ile CRUD: insert, select, update, delete” dersinde ne öğreneceğim?

Tüm CRUD işlemlerini Exposed'in tür güvenli sorgu DSL'ini kullanarak gerçekleştirin. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Query DSL ile CRUD: insert, select, update, delete” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Exposed Kurulumu: Veritabanı Bağlantısı ve İşlem DSL'i
  2. Table DSL ile Tablolar Tanımlama
  3. Query DSL ile CRUD: insert, select, update, delete
  4. Exposed DAO: Varlık Sınıfları ve İlişkiler
← Kotlin Academy Sayfasına Dön