在 CustomTaskChange 中执行 select?

Performing select in CustomTaskChange?

在 liquibase 中,我正在尝试使用 CustomTaskChange 来执行 "complex" 数据迁移。

伪代码如下所示:

class ChangeSet031 : CustomTaskChange {
    @Throws(CustomChangeException::class)
    override fun execute(database: Database) {
       val rows = database.select("select * from mytable")
       rows.forEach { row -> 
           val content = parseJson(row.mycolumn)
           val sql = "insert into mynewtable (col1, col2) values (?, ?)"
           database.insert(sql, content.col1, content.col2)
    }
}

问题是:我找不到执行 database.select 和 database.insert

的方法

至少,我想取回基础 java.sql.Connection 以便我可以使用纯 JDBC

关于该主题的文档很少: http://www.liquibase.org/documentation/changes/custom_change.html

还有例子: https://github.com/liquibase/liquibase/tree/master/liquibase-core/src/test/java/liquibase/change/custom

感谢任何帮助

这是我终于找到的丑陋的解决方法:

val conn = (database.connection as JdbcConnection).wrappedConnection

之所以有效,是因为 DatabaseConnection 的所有可用实现都继承自 JdbcConnection ...