Flyway Migration:NamedParameterJdbcTemplate

时间:2016-03-28 15:34:13

标签: java spring-jdbc flyway

无论如何使用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。我这不正确吗?

1 个答案:

答案 0 :(得分:0)

据Flyway消息来源create a new JdbcTemplate in SpringJdbcMigrationExecutor

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