之前我們連線的,一直都是測試用的資料庫。
今天我們來練線 MySQL 資料庫來進行操作。
目前有不少網站的資料庫實作,是透過 MySQL 資料庫,我們來嘗試連線 MySQL 資料庫。
假設各位在本機已經有一個正在運行的 MySQL 資料庫,首先,我們要在套件內多安裝 mysql connector 套件
implementation("mysql:mysql-connector-java:5.1.48")
和前面文章安裝 Exposed 框架時一樣,記得要 Load Gradle Change
接著只要我們調整連線方式
Database.connect(
"jdbc:mysql://localhost:3306/exposedyoutubedemo?useSSL=false",
driver = "com.mysql.jdbc.Driver",
user = "user",
password = "password"
)
這樣連線之後,我們就可以將連線的資料庫從 H2 Database,切換到 MySQL 資料庫了。
如果我們在後面加上資料庫互動的程式
transaction {
SchemaUtils.create(Users)
User.new {
name = "Alice"
}
User.new {
name = "Bob"
}
User.all().forEach {
println(it.name)
}
}
就會像之前一樣看到寫入資料庫的內容
Alice
Bob
要注意的是,由於我們這邊不是用 "jdbc:h2:mem:test"
,所以資料不會在程式終止之後消失。如果我們重複執行上述的程式碼,會導致資料重複寫入。
如果我們要連線多個資料庫,我們可以
val db1 = Database.connect(
"jdbc:mysql://localhost:3306/exposedyoutubedemo?useSSL=false",
driver = "com.mysql.jdbc.Driver",
user = "sail",
password = "password"
)
val db2 = Database.connect(
"jdbc:mysql://localhost:3306/exposedyoutubedemo?useSSL=false",
driver = "com.mysql.jdbc.Driver",
user = "sail",
password = "password"
)
取得連線物件之後,我們在 transaction()
函數內,加上 db1
和 db2
參數,來進行對不同資料庫的連線
transaction(db1) {
SchemaUtils.create(Users)
User.new {
name = "Alice"
}
}
transaction(db2) {
SchemaUtils.create(Users)
User.new {
name = "Bob"
}
User.all().forEach {
println(it.name)
}
}
執行這段程式之後,由於我們的 db1
和 db2
實際上都是連線我們的 MySQL 資料庫,所以我們會看到最後成功印出
Alice
Bob