安裝好 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 的部分就講到這裡,我們明天見!