Ich habe Exposed für den DB-Zugriff in Kotlin verwendet, es ist also ein Memorandum. Um den Vorgang zu überprüfen, habe ich mit Docker eine Test-DB eingerichtet und überprüft.
Ich bezog mich für die Umgebungskonstruktion von DOcker auf Folgendes. ・ Einführung von WSL2 und Docker https://qiita.com/KoKeCross/items/a6365af2594a102a817b
・ Maßnahmen zur Erschöpfung des WSL2-Speichers https://qiita.com/yoichiwo7/items/e3e13b6fe2f32c4c6120
Eine in Kotlin geschriebene SQL-Bibliothek. https://github.com/JetBrains/Exposed
Zunächst die Datei docker-compose.yaml zum Erstellen einer Datenbank mit Docker.
version: '3'
services:
db:
image: postgres:12.3
ports:
- 5433:5432
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin
POSTGRES_DB: test_db
Als nächstes folgt die Tabellendefinition.
object Member : Table("member") {
val id = integer("member_id").autoIncrement().primaryKey()
val name = varchar("name", 50)
val age = integer("age")
}
Endlich die Hauptfunktion.
import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.transactions.transaction
import org.jetbrains.exposed.sql.SchemUtils.create
fun main() {
Database.connect("jdbc:postgresql://localhot:5433/test_db", "org.postgresql.Driver", "admin", "admin")
transaction {
addLogger(StdOutSqlLogger)
create(Member)
Member.insert {
it[id] = 1
it[name] = "abc"
it[age] = 20
}
Member.insert {
it[id] = 2
it[name] = "efd"
it[age] = 30
}
for(member in Member.selectAll()) {
println("${member[Member.id]}: ${member[Member.name]}: ${member[Member.age]}")
}
Member.update({Member.name eq "abc"}) {
it[name] = "AIUEO"
}
for(member in Member.selectAll()) {
println("${member[Member.id]}: ${member[Member.name]}: ${member[Member.age]}")
}
Member.deleteAll()
drop(Member)
}
}
Es ist eine Niederlage, aber vorerst konnte ich bestätigen, dass CRUD durchgeführt werden kann.
Recommended Posts