Ktor×Exposed MySQL 연결
Exposed 를 이용해, 로컬 MySQL DB 에의 접속을 구현합니다.
환경
절차
1. 프로젝트에 Exposed 추가
build.gradle
에 필요한 라이브러리 추가※
mysql-connector-java
: JDBC 드라이버를 내포하고 있습니다. 어쩌면 로컬 MySQL과 버전 맞추어 두면 OK.dependencies {
︙
implementation "org.jetbrains.exposed:exposed:0.17.13"
implementation "mysql:mysql-connector-java:8.0.23"
}
변경 사항을 적용하고 설치합니다.
2. MySQL에 DB 작성
접속 확인을 위해 MySQL에 간단한 데이터를 작성해 둡니다.
mysql> USE ktor_example;
Database changed
mysql> SHOW tables;
+------------------------+
| Tables_in_ktor_example |
+------------------------+
| animal |
+------------------------+
mysql> DESCRIBE animals;
+-------+------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | text | NO | | NULL | |
| cry | text | YES | | NULL | |
+-------+------+------+-----+---------+----------------+
mysql> SELECT * FROM animals;
+----+-----------------------+--------------------+
| id | name | cry |
+----+-----------------------+--------------------+
| 1 | ゴリラ | ウホウホ |
| 2 | オランウータン | アァー! |
| 3 | サル | うきゃうきゃ |
+----+-----------------------+--------------------+
3. DB에 연결
Database.connect
로 DB에 연결할 수 있습니다.파라미터
url
, user
, password
는 각각의 설정에 맞추어 주십시오.Application.kt
private fun connectDB() {
Database.connect(
url = "jdbc:mysql://127.0.0.1/ktor_example",
driver = "com.mysql.cj.jdbc.Driver",
user = "root",
password = "password"
)
}
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
connectDB()
︙
4. 데이터 액세스
htps : // 기주 b. 코 m / 지 tB 라이언 s / 에 x 포세 d / 우키 / 갓찐 g-S rd d # dsl-
위를 참고로 DSL 형식으로 액세스해 보겠습니다.
테이블 정의
Table
를 상속받은 객체를 만듭니다.테이블명과 컬럼명은 DB에 작성한 것과 일치합니다.
src/db/table/Tables.kt
object Animals : IntIdTable() {
val name = varchar("name", 200)
val cry = varchar("cry", 200).nullable()
}
데이터 획득
잡입니다만
/animals
라우팅에 데이터 전건 취득하는 처리를 기술(다음 장에서 깨끗하게 할 예정)selectAll()
에서 테이블의 모든 레코드를 검색할 수 있습니다.Application.kt
get("/animals") {
var animals = listOf<Animal>()
transaction {
animals = Animals.selectAll().map {
Animal(
id = it[Animals.id].value,
name = it[Animals.name].toString(),
cry = it[Animals.cry].toString()
)
}
}
call.respond(animals)
}
// 扱いやすくする為にAnimalデータクラス作成
data class Animal(
val id: Int,
val name: String,
val cry: String?,
)
동작 확인
http://0.0.0.0:8080/animals
로 이동하여 DB에 작성한 데이터가 표시되는지 확인 🦍🦧🐒참고
Reference
이 문제에 관하여(Ktor×Exposed MySQL 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nmurata/items/4fd82cf4694765145ca5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)