Flyway迁移:NamedParameterJdbcTemplate

Flyway Migration: NamedParameterJdbcTemplate

是否可以使用 NamedParameterJdbcTemplate 而不是实施 SpringJdbcMigration 时遇到的标准 JdbcTemplate 创建飞路迁移 class?

我需要升级到 运行,我需要将列类型从文本转换为整数(用与该值关联的内部 ID 替换字符串值。)

我这样做的方法是临时存储用于反向查找的字符串值,删除该列并将其重新添加为正确的类型,然后 运行ning 一个更新调用以添加记录的适当 ID。我有类似于以下的代码,我想作为迁移的一部分执行:

String sql = "UPDATE my_table SET my_field = :my_field WHERE my_id IN (:my_ids)";
MapSqlParameterSource source = new MapSqlParameterSource();
source.addValue("my_field", someIntValue); // the internal id of the string I want to use.
source.addValue("my_ids", someListOfPKIds); // List of PK ids. 
namedTemplate.update(sql,source); //namedTemplate is a NamedParameterJdbcTemplate

但是,我似乎无法利用 NamedParameterJdbcTemplate。我在这方面有误吗?

根据 Flyway 消息来源,他们 create a new JdbcTemplate in SpringJdbcMigrationExecutor

但是您可以尝试在您的迁移中创建一个新的 NamedParameterJdbcTemplate 给定经典的 JdbcTemplate。检查 this constructor。例如。 new NamedParameterJdbcTemplate(jdbcTemplate)