无论如何使用NamedParameterJdbcTemplate
而不是JdbcTemplate
的实施所带来的标准SpringJdbcMigration
创建一个飞路迁移课程?
我需要运行升级,我需要将列类型从文本转换为整数(替换带有与该值关联的内部标识的字符串值。)
我执行此操作的方式是临时存储反向查找的字符串值,删除列并将其重新添加为正确的类型,然后运行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。我这不正确吗?
答案 0 :(得分:0)
据Flyway消息来源create a new JdbcTemplate in SpringJdbcMigrationExecutor
但是,您可以尝试在经典JdbcTemplate的迁移中创建新的NamedParameterJdbcTemplate。检查this constructor。例如。 new NamedParameterJdbcTemplate(jdbcTemplate)