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.
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ırselectAll().where { }— filtreyle sorgular;.orderBy()ve.limit()zincirlenebilirupdate({ 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
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
- Exposed Kurulumu: Veritabanı Bağlantısı ve İşlem DSL'i
- Table DSL ile Tablolar Tanımlama
- Query DSL ile CRUD: insert, select, update, delete
- Exposed DAO: Varlık Sınıfları ve İlişkiler