Komapper-jdbc
Install
Add bellow code your build.gradle.kts
dependencies {
// liquibase-kotlin
implementation("io.github.momosetkn:liquibase-kotlin-custom-komapper-jdbc-change:4.32.0-0.9.2")
}
Use customKomapperJdbcChange
execute is required, rollback is optional. the callback argument type is org.komapper.jdbc.JdbcDatabase
.
import momosetkn.liquibase.kotlin.parser.KotlinCompiledDatabaseChangeLog
import momosetkn.liquibase.kotlin.change.custom.komapper.customKomapperJdbcChange
import org.komapper.core.dsl.QueryDsl
class CompiledDatabaseChangelog1 : KotlinCompiledDatabaseChangeLog({
changeSet(author = "your_name", id = "20241007-2000-1") {
customKomapperJdbcChange(
execute = { db ->
val query = QueryDsl.executeScript(
"""
CREATE TABLE created_by_komapper (
id uuid NOT NULL,
name character varying(256)
);
""".trimIndent()
)
db.runQuery(query)
},
rollback = { db ->
val query = QueryDsl.executeScript("DROP TABLE created_by_komapper")
db.runQuery(query)
},
)
}
})
databaseChangeLog {
changeSet(author = "your_name", id = "20241007-2000-1") {
customKomapperJdbcChange(
execute = { db ->
val query = QueryDsl.executeScript(
"""
CREATE TABLE created_by_komapper (
id uuid NOT NULL,
name character varying(256)
);
""".trimIndent()
)
db.runQuery(query)
},
rollback = { db ->
val query = QueryDsl.executeScript("DROP TABLE created_by_komapper")
db.runQuery(query)
},
)
}
}
Configure org.komapper.jdbc.JdbcDatabase
override the momosetkn.liquibase.kotlin.change.custom.komapper.LiquibaseKomapperJdbcConfig.provideJdbcDatabase
example code
fun provideJdbcDatabase(
javaxSqlDataSource: javax.sql.DataSource,
liquibaseDatabaseShortName: String
): JdbcDatabase {
return JdbcDatabase(javaxSqlDataSource, getJdbcDialect(liquibaseDatabaseShortName))
}
private fun getJdbcDialect(liquibaseDatabaseShortName: String): JdbcDialect {
return runCatching {
JdbcDialects.get(liquibaseDatabaseShortName)
}.fold(
onSuccess = { it },
onFailure = {
val loader = ServiceLoader.load(JdbcDialectFactory::class.java)
val factory = loader.singleOrNull()
checkNotNull(factory) {
@Suppress("MaxLineLength")
"I could not find the `org.komapper.jdbc.JdbcDialects` that should be used. Please set the `${this::class.qualifiedName}.provideJdbcDatabase`."
}
factory.create()
}
)
}
momosetkn.liquibase.kotlin.change.custom.komapper.LiquibaseKomapperJdbcConfig.provideJdbcDatabase = ::provideJdbcDatabase
Last modified: 20 October 2024