无论如何,有没有使用NamedParameterJdbcTemplate
而不是实现JdbcTemplate
的标准SpringJdbcMigration
创建飞行迁移类的方法?
我有一个升级,需要在需要将列类型从文本转换为整数的地方进行升级(将字符串值替换为与该值关联的内部ID)。
我这样做的方式是临时存储用于反向查找的字符串值,删除该列并将其重新添加为适当的类型,然后运行UPDATE调用以将适当的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
但是,在给定经典JdbcTemplate的情况下,您可以尝试在迁移中创建新的NamedParameterJdbcTemplate。检查this constructor。例如。 new NamedParameterJdbcTemplate(jdbcTemplate)
关于java - 飞线迁移:NamedParameterJdbcTemplate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36265563/