安裝好 exposed 框架之後,我們就可以試看看存取資料庫了
首先我們用 DAO 的方式來存取資料庫
DAO,全名是 Data Access Object,顧名思義就是用物件的形式來存取。
因為這樣的方式比較符合以物件思考資料的架構,所以也會是後面教學所使用的主要方式。
首先,我們先宣告對應資料庫的物件 Cities 和類別 City:
object Cities: IntIdTable() {
    val name = varchar("name", 50)
}
class City(id: EntityID<Int>) : IntEntity(id) {
    companion object : IntEntityClass<City>(Cities)
    var name by Cities.name
}
這張表很單純,只有一個叫做 name 的欄位。
建立資料表的部分,我們可以透過
SchemaUtils.create (Cities)
進行資料表的建立。
這樣,我們就可以在程式裡使用 CITIES 資料表了。我們來試看看簡單的存取。
City.new {
    name = "St. Petersburg"
}
可以建立一筆新的 CITIES 資料,其中 name 是 St. Petersburg
要取出這筆資料,我們可以用 findById() 取出。
組合起來,就變成這樣:
get("/") {
    val cityName = transaction {
        // print sql to std-out
        addLogger(StdOutSqlLogger)
        SchemaUtils.create (Cities)
        City.new {
            name = "St. Petersburg"
        }
        City.findById(1)?.name
    }
    call.respondText("Cities: $cityName", contentType = ContentType.Text.Plain)
}
我們連線 http://127.0.0.1:8080/ 就可以看到 Cities: St. Petersburg,代表我們寫入資料庫成功了!
另外,我們也可以在 cmd 裡面看到 SQL 語法:
SQL: CREATE TABLE IF NOT EXISTS CITIES (ID INT AUTO_INCREMENT PRIMARY KEY, "NAME" VARCHAR(50) NOT NULL)
SQL: INSERT INTO CITIES ("NAME") VALUES ('St. Petersburg')
SQL: SELECT CITIES.ID, CITIES."NAME" FROM CITIES WHERE CITIES.ID = 1
今天有關 exposed DAO 的部分就講到這裡,我們明天見!