CRUD Query DSL:llä: insert, select, update, delete
Suorittakaa kaikki CRUD-operaatiot Exposedin tyyppiturvallisella kysely-DSL:llä.
CRUD Query DSL:llä: insert, select, update, delete on ilmainen Kotlin Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Kotlin Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.
Kysely-DSL:n yleiskatsaus
Exposedin Query DSL:n avulla voitte kirjoittaa tyyppiturvallisia SQL-operaatioita Kotlin-funktioilla. Kaikki operaatiot suoritetaan transaction { } -lohkon sisällä. Taikamerkkijonoja ei käytetä: sarakeviittaukset ovat Kotlinin ominaisuuksia, joten kirjoitusvirheet havaitaan käännöksen aikana.
Lisääminen
Lisätkää rivi käyttämällä Table.insert { } -funktiota. Lambda saa parametrikseen InsertStatement-olion, ja sarakearvot asetetaan [column]-operaattorilla:
transaction {
Users.insert {
it[Users.name] = "Alice"
it[Users.email] = "alice@example.com"
it[Users.age] = 30
}
}Lisääminen ja luodun tunnisteen hakeminen
Hakekaa automaattisesti luotu perusavain lisäyksen jälkeen käyttämällä insertAndGetId { } -funktiota IdTable-taululla:
val newId: Long = transaction {
Users.insertAndGetId {
it[Users.name] = "Bob"
it[Users.email] = "bob@example.com"
}.value
}Erämuotoinen lisääminen
Käyttäkää tehokkaisiin usean rivin lisäyksiin funktiota batchInsert(list) { item -> ... }. Exposed käsittelee ne yhtenä valmisteltuna lausekkeena:
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
}
}Kaikkien rivien valitseminen
Hakekaa kaikki rivit käyttämällä Table.selectAll()-funktiota. Käykää tulos läpi ResultRow-olioiden sekvenssinä ja käyttäkää sarakearvoja muodossa row[Column]:
transaction {
Users.selectAll().forEach { row ->
println("${row[Users.id]}: ${row[Users.name]}")
}
}Valitseminen WHERE-ehdon avulla
Suodattakaa rivejä ketjuttamalla .where { condition } (Exposed 0.46+) tai .select { condition } -funktio. Ehdot käyttävät operaattorien ylikuormituksia, kuten eq, like ja greater:
transaction {
Users.selectAll()
.where { Users.age greater 25 }
.forEach { println(it[Users.name]) }
}Tiettyjen sarakkeiden valitseminen
Välittäkää sarakeluettelo funktiolle .select(col1, col2), jotta haette vain kyseiset sarakkeet – tämä vastaa kyselyä 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)
}Päivittäminen
Muokatkaa olemassa olevia rivejä käyttämällä Table.update({ condition }) { } -funktiota. Sisempi lambda saa parametrikseen UpdateStatement-olion; asettakaa uudet arvot [column]-operaattorilla:
transaction {
Users.update({ Users.id eq 1L }) {
it[Users.name] = "Alice Updated"
it[Users.age] = 31
}
}Poistaminen
Poistakaa predikaattia vastaavat rivit käyttämällä Table.deleteWhere { condition } -funktiota. Se palauttaa poistettujen rivien määrän:
transaction {
val deleted = Users.deleteWhere { Users.id eq 5L }
println("Deleted $deleted rows")
}Järjestäminen ja rajoittaminen
Järjestäkää ja sivuttakaa tuloksia ketjuttamalla funktiot .orderBy(column to SortOrder.ASC) ja .limit(n) (valinnaisen offset-siirtymän kanssa):
transaction {
Users.selectAll()
.orderBy(Users.name to SortOrder.ASC)
.limit(10, offset = 20)
.map { it[Users.name] }
.forEach(::println)
}Koostefunktiot ja lukumäärä
Käyttäkää Exposedin sarakeoperaattoreiden kautta tavallisia SQL-koostefunktioita, kuten Users.id.count(), Users.age.avg() ja Users.age.max():
transaction {
val total = Users.selectAll().count()
println("Total users: $total")
}Pikatarkistus
Mikä Exposed-funktio palauttaa automaattisesti luodun perusavaimen, kun rivi lisätään IdTable-tauluun?
Yhteenveto: CRUD Query DSL:n avulla
Keskeiset opit:
insert { }— lisää rivin;insertAndGetId { }— lisää rivin ja palauttaa PK:nselectAll().where { }— tekee suodatetun kyselyn; ketjuta mukaan.orderBy()ja.limit()update({ condition }) { }— muokkaa rivejä;deleteWhere { }— poistaa rivejä- Kaikki operaatiot suoritetaan
transaction { }-lohkossa - Sarakkeisiin viitataan käännösaikana turvallisesti — merkkijonomuotoisia sarakkeiden nimiä ei tarvita
Opi Kotlin tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 51
- Oppitunnit
- 203
Usein kysytyt kysymykset
Onko oppitunti ”CRUD Query DSL:llä: insert, select, update, delete” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Kotlin Academy-oppimispolun 3 oppituntia, myös oppitunnin “CRUD Query DSL:llä: insert, select, update, delete”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”CRUD Query DSL:llä: insert, select, update, delete”?
Suorittakaa kaikki CRUD-operaatiot Exposedin tyyppiturvallisella kysely-DSL:llä. Harjoittelet Kotlin Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Kotlin Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Kotlin Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”CRUD Query DSL:llä: insert, select, update, delete”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Kotlin Academy-oppitunnilla?
Kyllä. Jokainen Kotlin Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Exposedin määritys: tietokantayhteys ja Transaction DSL
- Taulujen määrittäminen Table DSL:llä
- CRUD Query DSL:llä: insert, select, update, delete
- Exposed DAO: entiteettiluokat ja suhteet