[Day 17] 存取資料庫的另一種方式,談 exposed DSL

除了 DAO 以外,exposed 還提供了另一種存取資料庫的方式 DSL,類似我們常用的 Query Builder

下面我們就來介紹 exposed 的 DSL 怎麼使用

object

DSL 的連線方式,一樣需要一個 object

object Cities : Table() {
    val id = integer("id").autoIncrement()
    val name = varchar("name", 50)
}

有了這個 object 之後,我們就可以針對它進行資料庫操作了

Create

我們用 insertAndGetId

val id = Cities.insertAndGetId {
  it[name] = "Taipei"
}

Read

我們可以用 selectAll() 存取所有的資料

for (city in Cities.selectAll()) {
    println("${city[Cities.name]}")
}

也可以用 select{} 挑選我們想要的資料

StarWarsFilms.select { StarWarsFilms.sequelId eq 8 }

Update

update

Cities.update({ Cities.name eq "Taipei"}) {
    it[name] = "Tainan"
}

Delete

deleteWhere 來挑出要移除的資料

Cities.deleteWhere { Cities.name eq "Taipei" }