[Day 14] 更换连线的资料库,聊 Database.connect 的操作

之前我们连线的,一直都是测试用的资料库。

今天我们来练线 MySQL 资料库来进行操作。

连线MySQL

目前有不少网站的资料库实作,是透过 MySQL 资料库,我们来尝试连线 MySQL 资料库。

假设各位在本机已经有一个正在运行的 MySQL 资料库,首先,我们要在套件内多安装 mysql connector 套件

implementation("mysql:mysql-connector-java:5.1.48")

和前面文章安装 Exposed 框架时一样,记得要 Load Gradle Change

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() 函数内,加上 db1db2 参数,来进行对不同资料库的连线

transaction(db1) {  
 	SchemaUtils.create(Users)  
    User.new {  
 		name = "Alice"  
 	}  
}  
transaction(db2) {  
 	SchemaUtils.create(Users)  
    User.new {  
 		name = "Bob"  
 	}  
 	User.all().forEach {  
 		println(it.name)  
    }  
}

执行这段程序之後,由於我们的 db1db2 实际上都是连线我们的 MySQL 资料库,所以我们会看到最後成功印出

Alice
Bob

<<:  Day 04 专案结构

>>:  [Day4]在Rock pi4 上安装Armbian

Day-5 :阿公阿嬷都看得懂的前後端分离架构?

前端系虾米? 身为一个麻瓜,当初在看到前端两个字, 着实就猜想不就字面意思?应该系前後面,反之另一个...

CodeWars : 新手村练等纪录02- Growth of a Population

Growth of a Population 等级:7kyu 原始题目 In a small tow...

Day 11 : 案例分享(3.4) 会计模组-分析会计与资产折旧

案例说明及适用场景 会计科目与客户,一般常用的蒐寻,若还需其他统计效果,可以使用分析帐户或分析标签 ...

[DAY 14] getRange 与 getDataRange

接下来说说我觉得非常好用的两个函数 getRange 与 getDataRange 这两个函数在取得...

[Day23] 在 Codecademy 学 React ~ Component Lifecycle 生命周期我不懂你QQ

前言 原本以为生命周期应该很好懂, 但我卡在别的地方, 不过快 12 点了啊我先 po 出我目前进度...